本系列博文是《現(xiàn)代操作系統(tǒng)(英文第三版)》(Modern Operating Systems,簡稱MOS)的閱讀筆記,定位是正文精要部分的摘錄和課后習題精解,因此不會事無巨細的全面摘抄,僅僅根據(jù)個人情況進行記錄和推薦。由于是英文版,部分內(nèi)容會使用英文原文。
第十章是關(guān)于linux的簡略介紹。一百頁的篇幅導致介紹不可能面面俱到,也不如專門的Linux書籍(比如LKD、APUE、UNP)精細深入。不過一些習題不錯,有助于理解Linux的某些細節(jié)的設(shè)計意圖。
接下來的兩章“實例研究2:Windows Vista和”“實例研究3:Symbian”個人暫時沒有研究的興趣,僅僅粗略翻了下,不打算專門做筆記。
對于第十三章“操作系統(tǒng)設(shè)計”,基本是對全書的回顧,這里僅僅整理最有幫助的“機制與策略”部分。
第十章1./PRoc文件系統(tǒng)(P796)Linux的/proc目錄其實是一個文件系統(tǒng),其思想源于4.4BSD和System V,基本概念是為每一個進程在這個目錄下創(chuàng)建一個目錄,名稱即PID的十進制表示,該目錄下是和這個進程相關(guān)的信息。以前通過/proc來查看過進程信息,不過沒想到它是一種文件系統(tǒng)。這些文件在磁盤上實際上是不存在的。
另外,非特權(quán)用戶可以通過/proc來了解進程信息,甚至可以通過寫入的方式改變系統(tǒng)參數(shù)。
習題10. Why do you think the designers of Linux made it impossible for a process to send asignal to another process that is not in its process group?譯:
你認為是什么原因促使Linux的設(shè)計者不允許一個進程向和它不是同一個進程組的進程發(fā)送信號?
Answer:
Malicious users could wreak havoc with the system if they could send signalsto arbitrary unrelated processes. Nothing would stop a user from writing aprogram consisting of a loop that sent a signal to the process with PID i for alli from 1 to the maximum PID. Many of these processes would be unpreparedfor 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.
答案譯文:
惡意用戶可以通過向不相關(guān)的進程發(fā)送信號以造成系統(tǒng)災(zāi)難。無法阻止一個用戶編寫一個循環(huán)地向所有PID進程發(fā)送信號的程序。大量的進程將因未做好處理信號的準備而崩潰。kill掉自己的進程是合理的,但是kill其他用戶的進程是無法接受的。
分析:
除非是系統(tǒng)管理員,否則不應(yīng)該允許一個用戶kill掉另一個用戶的進程。
14. In every process' entry in the task structure, the PID of the parent is stored. Why?譯:
為什么進程的任務(wù)結(jié)構(gòu)中需要保存父進程的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.
分析:
進程退出時,其父進程需要獲得它的退出狀態(tài),因此進程需要父進程PID來確定應(yīng)該把它的退出狀態(tài)傳給誰。
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.譯:
伙伴系統(tǒng)中是否有可能存在兩個同樣大小的鄰接塊為空,但不會被合并成一個塊?解釋你的答案。
Answer:
It is possible if the two blocks are not buddies. Consider the situation ofFig. 10-17(e). Two new requests come infor eight pages each. At this pointthe bottom 32 pages of memory are owned by four different users, each witheight pages. Now users 1 and 2 release their pages, but users 0 and 3 holdtheirs. This yields a situation with eight pages used, eight pages free, eightpages free, and eight pages used. We have two adjacent blocks of equal sizethat cannot be merged because theyare not buddies.
分析:
答案描述的是下圖的情形,兩個塊雖然相鄰,但它們并非來自同一個16個頁面的塊,因而不能合并。
如果仍然不理解為何不可這樣合并,那么設(shè)想一下:如果這種情況是允許的,那么這64個頁面的塊可能會被分為16-32-16的分割,而合并的兩個塊大小應(yīng)該一樣,顯然無法合并,不能形成更大(64)的空閑塊,這是不合理的。
第12章中文版勘誤1.P525圖12-1,“顯式”應(yīng)為“顯示”。
第13章1.機制與策略(P975)原先在學習《Linux內(nèi)核設(shè)計與實現(xiàn)》時,沒搞清楚機制與策略到底是什么差別。作為UNIX的一大特色,“機制與策略相分離”在《現(xiàn)代操作系統(tǒng)》中被仔細分析,值得研讀一番。
先來看看《現(xiàn)代操作系統(tǒng)》上提到的機制與策略分離的好處:有助于體系結(jié)構(gòu)一致性、有助于使系統(tǒng)保持小型和良好的結(jié)構(gòu)。那么,所謂的“分離”,即指:“將機制放入操作系統(tǒng)而將策略留給用戶進程,從而在改變策略時系統(tǒng)保持不變”。退一步地,“即使策略模塊必須保留在內(nèi)核時,如果可能也應(yīng)與機制相隔離”。
再看看書中提到的幾個例子,首先是兩個現(xiàn)實中的例子。
例1,一家大型公司,擁有負責向員工發(fā)放薪水的工資部門,該部門擁有計算機、軟件、空白支票、與銀行的契約及更多機制,以便準確地發(fā)出薪水。然而,策略——確定誰該獲得多少薪水——是完全與機制分開的,并且是由管理部門決定的,工資部門只是做他們被要求做的事。
例2,一家飯店,擁有提供餐飲的機制,包括餐桌、餐具、服務(wù)員、充滿設(shè)備的廚房、與信用卡公司的契約等等。策略是由廚師長設(shè)定的,他來決定菜單上有什么。如果決定撤掉豆腐換上牛排,那么這一新的策略仍然可以由原有機制來處理。
接下來是操作系統(tǒng)的例子。
例3,考慮線程調(diào)度,優(yōu)先級調(diào)度器用于選出最高優(yōu)先級的線程,其機制是一個數(shù)組,以優(yōu)先級為索引。而策略是設(shè)定優(yōu)先級,可以存在不同的策略:優(yōu)先I/O、根據(jù)用戶級別決定、根據(jù)運行情況動態(tài)改變、甚至由用戶設(shè)定。
例4,分頁。機制涉及MMU管理、維護使用頁面和空閑頁面的列表、將頁面移入移出磁盤的代碼,而策略是頁面故障時做什么:基于LRU還是FIFO的或是其它某種。
例5,允許模塊裝載到內(nèi)核中。機制關(guān)系它們?nèi)绾伪徊迦搿㈡溄印⒖梢园l(fā)生什么調(diào)用、對它們可以發(fā)出什么調(diào)用,策略是確定允許誰(哪些用戶)將模塊裝載到內(nèi)核之中以及裝載哪些模塊。可能只有超級用戶可以裝載模塊,也許任何用戶都可以裝載被適當權(quán)威機構(gòu)數(shù)字簽名的模塊。
這樣,我的理解便是:機制是一系列配套設(shè)施,用來完成各種工作;而策略來表明如何使用這套設(shè)施來完成怎么樣的工作。
勘誤1.P961第二段末尾多出一個"The"。
|
新聞熱點
疑難解答