1. 程式人生 > >《現代作業系統》精讀與思考筆記 第十至十三章

《現代作業系統》精讀與思考筆記 第十至十三章

  本系列博文是《現代作業系統(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄和課後習題精解,因此不會事無鉅細的全面摘抄,僅僅根據個人情況進行記錄和推薦。由於是英文版,部分內容會使用英文原文。

  第十章是關於Linux的簡略介紹。一百頁的篇幅導致介紹不可能面面俱到,也不如專門的Linux書籍(比如LKD、APUE、UNP)精細深入。不過一些習題不錯,有助於理解Linux的某些細節的設計意圖。

接下來的兩章“例項研究2:Windows Vista和”“例項研究3:Symbian”個人暫時沒有研究的興趣,僅僅粗略翻了下,不打算專門做筆記。

  對於第十三章“作業系統設計”,基本是對全書的回顧,這裡僅僅整理最有幫助的“機制與策略”部分。

第十章

1./proc檔案系統(P796)

  Linux的/proc目錄其實是一個檔案系統,其思想源於4.4BSD和System V,基本概念是為每一個程序在這個目錄下建立一個目錄,名稱即PID的十進位制表示,該目錄下是和這個程序相關的資訊。以前通過/proc來檢視過程序資訊,不過沒想到它是一種檔案系統。這些檔案在磁碟上實際上是不存在的。

  另外,非特權使用者可以通過/proc來了解程序資訊,甚至可以通過寫入的方式改變系統引數。

習題

10. Why do you think the designers of Linux made it impossible for a process to send a signal to another process that is not in its process group?

譯:

  你認為是什麼原因促使Linux的設計者不允許一個程序向和它不是同一個程序組的程序傳送訊號?

Answer:

  Malicious users could wreak havoc with the system if they could send signals to arbitrary unrelated processes. Nothing would stop a user from writing a program consisting of a loop that sent a signal to the process with PID i for all i from 1 to the maximum PID. Many of these processes would be unprepared for the signal and would be killed by it. If you want to kill off your own processes, that is all right, but killing off your neighbor’s processes is not acceptable.

答案譯文:

  惡意使用者可以通過向不相關的程序傳送訊號以造成系統災難。無法阻止一個使用者編寫一個迴圈地向所有PID程序傳送訊號的程式。大量的程序將因未做好處理訊號的準備而崩潰。kill掉自己的程序是合理的,但是kill其他使用者的程序是無法接受的。

分析:

  除非是系統管理員,否則不應該允許一個使用者kill掉另一個使用者的程序。

14. In every process' entry in the task structure, the PID of the parent is stored. Why? 

譯:

  為什麼程序的任務結構中需要儲存父程序的PID?

Answer:

  When the process exits, the parent will be given the exit status of its child.The PID is needed to be able to identify the parent so the exit status can be

transferred to the correct process.

分析:

  程序退出時,其父程序需要獲得它的退出狀態,因此程序需要父程序PID來確定應該把它的退出狀態傳給誰。

25. Is it possible that with the buddy system of memory management it ever occurs that two adjacent blocks of free memory of the same size co-exist without being merged into one block? If so, explain how. If not, show that it is impossible.

譯:

  夥伴系統中是否有可能存在兩個同樣大小的鄰接塊為空,但不會被合併成一個塊?解釋你的答案。

Answer:

  It is possible if the two blocks are not buddies. Consider the situation of Fig. 10-17(e). Two new requests come infor eight pages each. At this point the bottom 32 pages of memory are owned by four different users, each with eight pages. Now users 1 and 2 release their pages, but users 0 and 3 hold theirs. This yields a situation with eight pages used, eight pages free, eight pages free, and eight pages used. We have two adjacent blocks of equal size that cannot be merged because theyare not buddies.

分析:

  答案描述的是下圖的情形,兩個塊雖然相鄰,但它們並非來自同一個16個頁面的塊,因而不能合併。

  如果仍然不理解為何不可這樣合併,那麼設想一下:如果這種情況是允許的,那麼這64個頁面的塊可能會被分為16-32-16的分割,而合併的兩個塊大小應該一樣,顯然無法合併,不能形成更大(64)的空閒塊,這是不合理的。

第12章

中文版勘誤

1.P525圖12-1,“顯式”應為“顯示”。

第13章

1.機制與策略(P975)

  原先在學習《Linux核心設計與實現》時,沒搞清楚機制與策略到底是什麼差別。作為UNIX的一大特色,“機制與策略相分離”在《現代作業系統》中被仔細分析,值得研讀一番。

  先來看看《現代作業系統》上提到的機制與策略分離的好處:有助於體系結構一致性、有助於使系統保持小型和良好的結構。那麼,所謂的“分離”,即指:“將機制放入作業系統而將策略留給使用者程序,從而在改變策略時系統保持不變”。退一步地,“即使策略模組必須保留在核心時,如果可能也應與機制相隔離”。

  再看看書中提到的幾個例子,首先是兩個現實中的例子。

  例1,一家大型公司,擁有負責向員工發放薪水的工資部門,該部門擁有計算機、軟體、空白支票、與銀行的契約及更多機制,以便準確地發出薪水。然而,策略——確定誰該獲得多少薪水——是完全與機制分開的,並且是由管理部門決定的,工資部門只是做他們被要求做的事。

  例2,一家飯店,擁有提供餐飲的機制,包括餐桌、餐具、服務員、充滿裝置的廚房、與信用卡公司的契約等等。策略是由廚師長設定的,他來決定選單上有什麼。如果決定撤掉豆腐換上牛排,那麼這一新的策略仍然可以由原有機制來處理。

  接下來是作業系統的例子。

  例3,考慮執行緒排程,優先順序排程器用於選出最高優先順序的執行緒,其機制是一個數組,以優先順序為索引。而策略是設定優先順序,可以存在不同的策略:優先I/O、根據使用者級別決定、根據執行情況動態改變、甚至由使用者設定。

  例4,分頁。機制涉及MMU管理、維護使用頁面和空閒頁面的列表、將頁面移入移出磁碟的程式碼,而策略是頁面故障時做什麼:基於LRU還是FIFO的或是其它某種。

  例5,允許模組裝載到核心中。機制關係它們如何被插入、連結、可以發生什麼呼叫、對它們可以發出什麼呼叫,策略是確定允許誰(哪些使用者)將模組裝載到核心之中以及裝載哪些模組。可能只有超級使用者可以裝載模組,也許任何使用者都可以裝載被適當權威機構數字簽名的模組。

  這樣,我的理解便是:機制是一系列配套設施,用來完成各種工作;而策略來表明如何使用這套設施來完成怎麼樣的工作。

勘誤

1.P961第二段末尾多出一個"The"。

相關推薦

現代作業系統精讀思考筆記 十三

  本系列博文是《現代作業系統(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄和課後習題精解,因此不會事無鉅細的全面摘抄,僅僅根據個人情況進行記錄和推薦。由於是英文版,部分內容會使用英文原文。   第十章是關於Linux的簡略介紹。一百頁的

現代作業系統精讀思考筆記 檔案系統

  本系列博文是《現代作業系統(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄理解和課後習題精解,因此不會事無鉅細的全面摘抄,僅僅根據個人情況進行記錄和推薦。由於是英文版,部分內容會使用英文原文。   課後習題的選擇標準:儘量避免單純的概念

現代作業系統精讀思考筆記 輸入/輸出

Read performance: RAID levels 0, 2, 3, 4, and 5 allow for parallel reads to service one read request. However, RAID level 1 further allows two read re-ques

現代作業系統精讀思考筆記 死鎖

  本系列博文是《現代作業系統(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄理解和課後習題精解,因此不會事無鉅細的全面摘抄,僅僅根據個人情況進行記錄和推薦。由於是英文版,部分內容會使用英文原文。   課後習題的選擇標準:儘量避免單純的概念

現代作業系統精讀思考筆記 多媒體

  第七章部分內容與前幾章內容關聯很大,比如程序排程、磁碟排程、檔案系統,而且多為實現細節,這裡不詳述。 1.幀數與閃爍(P476)   畫面動作的平滑性不是完全由每秒的幀數決定的,而是由每秒不同畫面的數目決定的。即使把20幀的視訊提高到80幀,而提高方式僅僅是把同樣一幀重複播放4次,那麼它仍然會不連

現代作業系統精讀思考筆記 記憶體管理

  本系列博文是《現代作業系統(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄理解和課後習題精解,因此不會事無鉅細的全面摘抄,僅僅根據個人情況進行記錄和推薦。由於是英文版,部分內容會使用英文原文。   課後習題的選擇標準:儘量避免單純的概念

現代作業系統精讀思考筆記 多處理機系統 安全

  兩章雖然篇幅不小,不過都是以介紹為主,這部分不是我讀這本書的重點,看得比較粗略,筆記內容也不多,乾脆合二為一。 第八章 多處理機系統   正如章節名,這章主要是關於多處理機、多計算機、虛擬化、分散式系統。由於非單機的多處理器系統和網路通訊關係密切,還講了一些計算機網路的內容。 1.非阻塞send

現代作業系統精讀思考筆記 第一 引論

  本系列博文是《現代作業系統(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄和課後習題精解,因此不會事無鉅細的全面摘抄,僅僅根據個人情況進行記錄和推薦。由於是英文版,部分內容會使用英文原文。   課後習題的選擇標準:儘量避免單純的概念考察

斯坦福大學-自然語言處理入門 筆記 九課 單詞含義相似性

一、單詞含義與單詞關係 回顧:詞目(lemma)與單詞形式(wordform) 詞目:表示相同的詞根、詞性以及大致的語義 單詞形式:表示在文件中出現的具體單詞形式 一個詞目可能會含有很多含義(sense)。含義(sense)表示單

斯坦福大學-自然語言處理入門 筆記 一課 最大熵模型判別模型(2)

一、最大熵模型 1、模型介紹 基本思想:我們希望資料是均勻分佈的,除非我們有其他的限制條件讓給我們相信資料不是均勻分佈的。均勻分佈代表高熵(high entropy)。所以,最大熵模型的基本思想就是我們要找的分佈是滿足我們限制條件下,同時熵最高的分佈。 熵:表示分佈的不

C++筆記 五課 類封裝的概念---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十五課 類與封裝的概念 1.類的組合 電腦一般而言是由CPU,記憶體,主機板,鍵盤和硬碟等部件組合而成。 思考 1.學習電腦組裝需要多少時間?幾個月 2.學習電腦組裝是否

Redis開發運維讀書筆記--快取設計

快取能夠有效地加速應用的讀寫速度,同時也可以降低後端負載,對日常應用的開發至關重要。但是將快取加入應用架構後也會帶來一些問題. 1 快取的收益和成本 收益如下:·加速讀寫:因為快取通常都是全記憶體的(例如Redis、Memcache),而儲存層通常讀寫效能不夠強悍(例如M

斯坦福大學-自然語言處理深度學習(CS224n)筆記 課 神經機器翻譯(neural machine translation)attention模型

本課概要 1、機器翻譯(MT) 2、帶attention的序列模型 3、序列模型解碼器(decoder) 一、機器翻譯(MT) 機器翻譯是一個十分經典的語言理解的測試,涉及語言分析(language analysis)與語言生成(language generat

《HTTP 權威指南》筆記:& 國際化、內容協商轉碼

二進制 首部 指南 生成文檔 緩存 -type nat lang 緩存代理 《HTTP 權威指南》筆記:第十六章 國際化 客戶端通過在請求報文中的 Accept-Language 首部和 Accept-Charset 首部來告知服務器:“我理解這些語言.&rd

《資料結構演算法分析》學習筆記--演算法設計技巧

[toc] *** ## 10.1 貪婪演算法 貪婪演算法分階段的工作,在每個階段,可以認為所做決定是最好的,而不考慮將來的後果。一般來說,這意味著選擇的是某個區域性的最優。當演算法終止時,我們希望區域性最優就是全域性最優。如果是這樣的話,那麼演算法就是正確的,否則,演算法得到的是一個次最優解。如果不要求絕

python學習筆記二節

random 對象 學習 alt 重命名 浮點 內容 目錄 模塊 模塊:模塊本質上就是一個py文件。分為三部分:內置模塊、第三方模塊(模塊調用以及包的概念)先找解釋器裏的Py文件 再找安裝路徑lib下的文件,再找自定義的模塊。時間戳:1970年設置的一個時間為0,時間每增加

python學習筆記一節(叠代和其他)

技術分享 img 余數 商品列表 步長 取數 sorted函數 學習 四舍五入 yiled 面相過程編程 造好內容,統一發給下面 上面這個是傻瓜版 內置函數 print(divmod(10,3)) 將10除以3,顯示商和余數 enumerate函數,顯示元素及它

oracle課堂筆記--八天

width cat 工作 反饋 三種 刪掉 reload 殺死 alter Oracle NET [email protected]/* */器的具體連接信息 2.客戶端通過tnsname.ora中的描述向服務器發出鏈接請求服務器端 3.服務器的監聽器接收到連

算法導論筆記——~ 數據結構(一) 散列

發生 情況 要求 sub 裝載 ted 因子 let 完全 第十章 基本數據結構 棧:可由數組表示 隊列:可由數組表示 指針和對象:可由多數組表示。可用棧表示free list 有根數:   二叉樹:左右孩子   分支無限制:左孩子右兄弟表示法 第十一章 散列表 數組:

算法導論筆記—— 貪心算法

一個 出現 預處理 優化 節點 求解 多選 數據結構 集中 通常用於最優化問題,我們做出一組選擇來達到最優解。每步都追求局部最優。對很多問題都能求得最優解,而且速度比動態規劃方法快得多。 16.1 活動選擇問題 按結束時間排序,然後選擇兼容活動。 定理16.1 考慮任意