推薦一本書:計算機的心智:作業系統之哲學原理

阿蘇爾發表於2018-04-21

對於我們這些非計算機專業的學生來說,能夠從計算機的底層理解計算機的運算過程其實是需要花費很大的努力,尤其是沒有老師帶,沒有同學交流,只能自己一個人去摸索的情況下。
因為要學習計算機的基礎知識,我從網上了解到基本上需要學習四本基礎知識課程:計算機組成原理、資料結構和演算法、計算機作業系統、計算機網路。這四門課程都有很多非常經典的書籍,尤其是外文書籍。但是對於國內的群眾來說,時間不那麼充足的情況下,閱讀外文的可操作性不那麼可觀。我閱讀過《現代作業系統》,不過感覺晦澀難懂,抓不住重點,不能形成一個明確的知識體系,而這本《計算機的心智:作業系統之哲學原理》從整體上對整個作業系統講解的很清楚明白。當你理解了每個部分的功能,你就對整個系統有個全面初步的瞭解,這時候你在去深入的瞭解一些細節,效果會更好。所以,我建議首先閱讀每一篇的開篇時的那一小段話,一定要全部閱讀完之後,在仔細的思考一下,你就能從巨集觀上把握作業系統具體是幹什麼用的。然後有了整體的把握之後再去詳細看每一篇的細節。
基本上,計算機的所有工作都是圍繞CPU進行的,記憶體和外存為CPU提供資源。在這裡,我先把每一篇的前言部分全部全文摘錄下來,希望能夠加深自己對作業系統整體的理解和把握。

計算機的心智:作業系統之哲學原理

前言

CPU管理(程式與執行緒)、記憶體管理(虛擬記憶體)、外村管理(檔案系統)、I/O管理(輸入與輸出)等作業系統的核心機制不外乎是資源的管理,它們都遵循著一切人類資源管理的基本原則,即如何有效地發掘資源、監控資源、分配資源和回收資源。
除了提供管理的功能外,作業系統還需要保證自己的正常運轉,即它必須盡力使自身不發生失效或崩潰,因為這是提供其他一切功能的基礎。這與人類把確保自身健康生活作為開發利用資源的前提是一個道理。
如果我們把握了資源的根本屬性,即資源管理必然涉及共享和競爭的管理,理解了作業系統必須首先保障自己的正常運轉,就會理解作業系統的一切行為。前者指引著作業系統功能的設計與進化,後者推動著作業系統可靠性地演變。
資源管理也好,保證自身的正確性也好,它們都有著根本的線索。這條根本線索就是人類在長期的生活實踐中摸索出來的管理社會和保障自身安全的各種辦法。這些辦法是隨著人類哲學思維的變化而改進的。因此,只要明白了人類的哲學思維,就能明白作業系統所遵循的哲學原理,進而明白整個作業系統的設計與構造。
除了使作業系統易於理解外,從哲學的層面闡述作業系統的原理還有如下好處:
- 作業系統可以變化,但支援其存在的哲學原理是不變的。這樣,本書的內容可以在作業系統不斷演變的環境下保持有效,而不會像其他書的內容,隨著時間的推移而過時。
- 對於很多人來說,作業系統所採取的機制、策略和手段看上去十分枯燥,如果從哲學原理上給它們賦予人性的特點,這些機制、策略和手段便不在枯燥。
通過將人生哲學與作業系統聯絡起來,從作業系統哲學原理的層次闡述作業系統的核心技術,就能夠理解掌握作業系統的精髓。

第一篇:基礎原理篇

對於任何一門課程來說,首先探討的問題就是這門課的主題到底是什麼?對於剛接觸作業系統的入門者來說,自然想到的問題當然也會是作業系統到底是什麼東西。回答這個問題是本篇的職責。此外,作業系統作為計算機的核心控制系統,它在計算機執行過程中扮演什麼角色?它的來歷是什麼?它有一些什麼基本概念?我們應該如何看待作業系統?它是如何參與到程式的執行過程中的?這些也是學習作業系統需要了解的基本問題。
本書的基礎原理篇就是真的上述問題而寫成。它對這些問題進行解答和討論,併為我們接下來介紹作業系統的核心功能部件打下基礎和鋪墊。
本篇最為重要的核心思想是作業系統在計算機執行過程中扮演的角色:魔術師和管理者。魔術師將醜陋變得美好,將沒有變為有,將少變為多:而管理者則對所有計算機資源進行管理以達到公平和效率的“雙料”境界。對作業系統這兩個角色的理解將非常有助於對程式、執行緒、虛擬記憶體、檔案系統和輸入輸出系統的掌握。

第二篇:程式原理篇

有了基礎原理篇的鋪墊,我們就可以進入到作業系統核心功能部件的講解了。
計算機,顧名思義,是用來計算的。而進行計算的關鍵部件是計算機的晶片,即CPU。CPU能夠按照一定的順序進行正確計算是在一個指揮者的控制之下完成的。這個指揮者就是作業系統,而作業系統對CPU進行管理和施行魔法的手段就是程式和執行緒。因此,對程式和執行緒這些施法道具進行闡述對理解作業系統自然十分重要,對其進行管理也就理所當然地成為作業系統的一個關鍵職責。
本篇最重要的內容是併發。因為要併發,我們發明了程式,又進一步發明了執行緒,只不過程式和執行緒的併發層次不同。程式屬於在處理器這一層次上提供併發的抽象,執行緒則屬於在程式這個層次上再提供一層併發的抽象。如果我們進入計算機體系結構裡,就會發現,流水線提供的也是一種併發,只不過是指令集併發。這樣,流水線、執行緒、程式就從低到高在三個層次上提供我們所迫切需要的併發。

第三篇:記憶體原理篇

計算機的一個基本功能是計算。計算機除了需要使用硬體以外,還要有兩種資訊:資料和程式碼,他們是計算硬體CPU的輸入,沒有這些,CPU也是巧婦難為無米之炊-無法進行計算。那麼這些東西從哪來呢?或者說這些資訊存放在什麼地方呢?顯然,存放這些東西的地方需要能夠很快地將資料讀出寫入,以便能夠與CPU合作完成計算機被賦予的功能。這個地方不是別的,就是計算機的主儲存器,通常簡稱為記憶體。對記憶體進行管理是作業系統對CPU進行管理的重要支援。
本篇最為重要的核心思想是虛擬記憶體。通過這種機制,作業系統將記憶體的容量擴增或無限擴大,將記憶體的訪問速度大幅度提高,而其使用的語料卻很簡單:一點點快取,一些主存和便宜的磁碟;其採用的機制也簡單至極:動態地址翻譯!

第四篇:檔案原理篇

在上一篇講過,計算機執行時所需的資料和程式碼從主儲存器或者記憶體而來。如果計算機不在執行狀態時,這些資料和程式碼保持在何處呢?我們當然可以試一下記憶體。但問題是記憶體不是永續性的儲存介質,它是程式執行過程中臨時分配的儲存空間。一旦程式結束執行,其所佔記憶體空間就會被釋放,存放在裡面的資料和程式碼也將消失。而且,記憶體需要電能支援才能保持資料(指一般的記憶體),一旦斷電,所有資料都將丟失。因此,資料和程式碼想要長久保持,就需要一個更為持久的地方來存放,這個持久地方就是磁碟。而對磁碟進行管理就是作業系統的另一個重要使命。如果管理得當,磁碟、記憶體和CPU將協作完成計算機的使命。
計算機管理磁碟採用的手段或者抽象就是檔案系統,這是本篇講解的關鍵主題。
本篇最重要的核心是資料夾及其實現,因為它是檔案系統運作的根本。通過資料夾,我們才能找到我們需要的檔案,完成從抽象到現實的轉換。

第五篇:IO原理篇

有了計算,又有了存放資料的臨時和永久地方,似乎計算機需要的一切都已經具備。但這是真的嗎?我們知道,發明計算機的目的是讓計算機為人類服務,而計算機要為人類服務就得有一種辦法與人類進行溝通或者互動。而實現這種互動的手段就是計算機的輸入和輸出。一臺沒有輸入和輸出的計算機,其CPU、記憶體和磁碟在強大,對人們也並無太大用處,甚至說是毫無用處。就像一個人一樣,如果其能力再強,大腦再聰明,只要他與外界的溝通渠道(聽說讀寫)被打斷或有缺陷,就會被世人看做一個無用的人。
因此,要想讓計算機真的有用,就得有輸入和輸出。而作業系統既然是計算機的掌控者,當然也需要對輸入輸出進行掌控。本篇即對計算機與外界進行溝通的輸入與輸出機制進行詳解。
本篇最為重要的核心是輸入輸出的硬體模式與軟體模式,及這兩個模式之間的對應關係。

第六篇:多核原理篇

隨著多核技術的流行,作業系統作為計算機的管理者,不得不增加對多核的管理功能。而從單核到多核,並不只是處理器或處理器核數量的簡單變化,其對作業系統的影響是多方位的。首先,多核的出現對作業系統的程式和執行緒排程產生了直接影響。因為這個時候可以同時排程多個執行緒和程式進行執行。其次,在多核環境下,一條指令可以同時在多個核上面執行,就使得單核環境下的同步機制不一定執行正確。另外,多核的出現使得能耗的管理趨於重要。
本篇最重要的概念就是多核之間的協調:即如何讓多個核的計算能力相得彌彰,而不是相互抵消。從某種程度上說,多核之間的協調與前面講過的程式或執行緒之間的協調具有相通性。而從另一個角度看,這種協調又是程式之間或執行緒之間協調的擴充套件和延續,因此,只要明白了執行緒之間的協調原理與機制,理解多核技術及其對作業系統的影響就是水到渠成的事情了。

第七篇:作業系統設計原理篇

前面六大篇對作業系統的基本概念和各種機制進行了詳細論述。雖然這些論述是分篇分章進行的,但它們之間並不是互相割裂的,而是有著內部的邏輯聯絡的。聯絡它們的紐帶有多條。首先是作業系統作為計算機的管理者,需要對計算機的各個組成部分進行管理,這就導致了CPU管理、記憶體管理、磁碟管理、輸入輸出裝置管理等作業系統功能的出現和相互關聯。其次,作業系統作為魔術師,需要對計算機的各種硬體進行抽象和裝扮,以使其顯得更大、更快、更好、更容易使用。而這些從抽象就形成了程式執行緒、虛擬記憶體、檔案系統、各種I/O模式等作業系統構造的出現。而這些構造之間也因作業系統魔術師的角色而互相聯結起來。
但除了管理和魔幻這兩條共同的紐帶外,作業系統能夠各個部分海投一個聯結紐帶:其設計上所遵循的哲學原理。雖然CPU、記憶體、磁碟、輸入輸出等裝置聽上去相差很大,但對他們進行管理和抽象時所採用的策略卻有很多相通點。本篇即對這些相通點或哲學原理進行討論。
本篇從高屋建瓴的角度對作業系統設計的十條哲學原理進行闡述。顯然,作業系統的設計原理有很多,本篇選取的只是這諸多原理裡面非常重要的十條。
本篇最為重要的核心是不同的生活哲學將導致不同的作業系統設計與構造。只要真正理解了人生哲學,就真正明白了作業系統。

相關文章