記得小時候常常念過的一首詩是這樣的:
從小時候就開始數了。
數到懂事、數到成熟,
還沒有數清。
天上的星星為什麼數不清呢?
像記憶和幻想,
永遠揹負著固執的謎....
對於許多大學計算機及相關專業的同學來說,作業系統就像天上的星星,隱藏著一個固執的謎,永遠學不清楚。不過,作業系統真的學不清楚嗎?
不是的。學不清楚是因為沒有看到其背後的奧祕。這個奧祕不是所有的人都知道的。即使是研究作業系統的人也不一定意識到它,更別提計算機初學者了。
那麼這個奧祕是什麼呢?
天上的星星數不清是因為我們試圖做的事情是數星星。如果我們換個角度,不去數星星,而是尋找星星的設計師,讓他告訴我們星星的數量,不就清楚了嗎?
這也正是學習作業系統的奧祕。要理解作業系統,就要找到作業系統的設計師,讓他們告訴我們作業系統所蘊涵的所有祕密。當然,這裡的尋找設計師並不是真的找來他們,因為找到所有的設計師是不可能的。這裡的設計師指的是一種抽象,一種所有設計師所共有的人生哲學,因為設計師在設計作業系統時會不自覺地將自己的思維或人生追求構造在作業系統裡,從而賦予作業系統以心智,而作業系統也就在這種心智的指揮下執行著。
內容太多,省略部分Σ( ° △ °|||)︴
筆記分為8篇,分別是基礎原理篇、程序原理篇、執行緒原理篇、記憶體原理篇、檔案原理篇、I/O原理篇、多核原理篇和作業系統設計篇
現在就讓我們一起來揭示祕密, 數清作業系統裡的星星吧。
大偽似真,大道無形
本篇最為重要的核心思想是作業系統在計算機執行過程中扮演的角色:魔術師和管理者。魔術師將醜陋變得美好,將沒有變為有,將少變為多;而管理者則對所有計算機資源進行管理以達到公平和效率的「雙料"境界。對作業系統這兩個角色的理解將非常有助於對程序、執行緒、虛擬記憶體、檔案系統和輸入輸出系統的掌握。
程式是如何執行的
管理者角色
面試題
作業系統的演變過程
作業系統的未來發展趨勢
計算機硬體基本知識
作業系統結構
恍兮惚兮,其中有像;惚兮恍兮,其中有物
本篇包括第4~6章的內容。第4章闡述的內容包括程序出現的邏輯必然性、多道程式設計的效率、程序的建立和消亡、程序的狀態及其轉換、程序與地址空間、程序管理和程序模型的缺陷。第5章講解的內容包括排程的目標、先來先服務、時間片輪轉、短任務優先、優先順序排程、混合排程、實時排程等演演算法,並對優先順序倒掛和執行緒的不確定性進行討論。第6章包括為什麼要通訊、管道、記名管道、通訊端、訊號、號誌、共用記憶體、訊息佇列等。
程序概論
多道程式設計的好處
程序管理
程序擁抱:共用記憶體
本篇即對程序級的並行機制——程序模型進行討論。本篇包括第7~10章的內容。第7章的內容包括程序分身術程序、 程序管理、程序的使用者態、核心態和混合態實現、現代作業系統的程序實現模型、多程序之間的關係、程序模型主要考慮的問題。第8章的內容包括為什麼同步、同步的目的、鎖原語的進化、睡覺與叫醒原語、號誌、管程、訊息傳遞和柵欄。第9章對死鎖的產生、發展、防止與避免進行講解,並討論死鎖、活鎖和飢餓的關係。第10章講述如何使用中斷啟用和禁止、測試與設定來實現鎖原語。
程序的分身術——執行緒
核心態執行緒實現
使用者態執行緒實現
從使用者態進入核心態
無發制人:死煩的動態避免
本篇包括第11~14章的內容。
第11章講述記憶體管理的環境、虛擬記憶體、作業系統在記憶體中的位置、程式在記憶體裡的位置(固定載入地址、固定分割區、可變分割區)、基本記憶體管理機制(地址翻譯、基址極限、交換)、閒置空間管理等內容。
第12章講解的內容包括基址極限的問題、分頁管理、頁表、頁面翻譯過程、分頁管理系統的優缺點、多級頁表、地址翻譯速度、鎖住頁面、記憶體抖動和頁面尺寸設計。
第13章對頁面更換演演算法的來龍去脈、欲達到的目的、各種具體的頁面更換演演算法進行細緻講解。
第14章的內容包括頁式管理系統的侷限、分段管理系統、分段的優缺點、段號與定址位數,並對否定之否定在記憶體管理模式發展過程中的作用進行討論。
虛擬記憶體的概念
先進先出演演算法
使用矩陣實現LRU演演算法
分段管理系統
大成若缺,其用不敝;大盈若衝,其用不窮
本篇內容包括第15~ 18章的內容。
第15章 講述的內容包括磁碟結構、磁碟存取速度、磁碟的作業系統介面、磁碟存取過程和磁碟排程。
第16章講述為什麼需要檔案系統、什麼是檔案系統、檔案系統的目的、檔案的基本知識、檔案的儲存結構、檔案型別、檔案存取、檔案屬性、檔案操作、資料夾、相對與絕對路徑、共用與連結、記憶體對映的檔案等內容。
第17章 的內容包括檔案系統分佈、檔案的實現、資料夾的實現、共用檔案的實現、磁碟空間的管理等。
第18章的內容包括檔案安全效能(檔案存取控制、存取控制列表、能力表)、檔案可靠效能(永續性、一致性、 紀錄檔、交易、隨影、一致性檢查)和檔案系統的效率效能( 提前讀取、減少磁臂移動距離、紀錄檔結構的檔案系統LFS)。
盤面的結構
檔案系統
檔案內容組織
檔案的實現
存取控制的實施
檔案系統永續性
善者,不善人之師;不善者,善人之資
因此,要想計算機真的有用,就得有輸入和輸出。作業系統既然是計算機的掌控者,當然也需要對輸入和輸出進行控制。本篇即對計算機與外界進行溝通的輸入與輸出機制進行講解。本篇僅有一章(第19章),討論的內容包括輸入輸出的重要性和目的、輸入輸出硬體、物理I/O模式(專有通道I/O、記憶體對映的IO、複合I/O、DMA)、輸入輸出軟體、軟體I/O模式(可程式化I/O、中斷驅動的I/O、DMA)、I/O軟體分層、裝置驅動程式等。
裝置控制器
物理I/O模式
邏輯I/O模式
美言不信,信言不美
本篇對新出現的多核技術進行講解。重點討論多核環境給作業系統帶來的影響。全篇包括第20章和第21章兩章。第20章的內容包括多核處理器結構(超執行緒結構、多核結構、多核超執行緒結構)、多核記憶體結構(UMA、NUMA、COMA、NORMA)、對稱多核處理器計算機的啟動過程、多處理器之間的通訊、SMP快取一致性等。第21章的內容包括多核程序同步、多核環境下的軟體同步原語、旋鎖及其實現、佇列旋鎖、多核環境下的程序排程、多核環境下的能耗管理和多核系統效能。
多處理器結構
多核結構
SMP快取一致性
多聞數窮,不若守中
本篇從高屋建瓴的角度對作業系統設計的十條哲學原理進行闡述。顯然,作業系統的設計原理有很多,本篇選取的只是諸多原理裡面非常重要的十條。第22章將從作業系統和人類社會兩個層面對這十條原理進行論述與比較,以使讀者更加清楚地明白作業系統就是人類社會在計算機裡面的反映,明白了人類社會的運轉就明白了作業系統的運轉。讀完本篇後,讀者可自行發現挖掘作業系統的其他設計原則和原理。
作業系統設計的第1條哲學原理:層次架構
哲學原理:簡單為美——求於至簡,歸於永恆
完整版見文末
內容極多,略Σ( ° △ °|||)︴.......................................................
程序間通訊
排程
無記憶體抽象
地址空間的概念
空閒空間塊
物理轉儲和邏輯轉儲
檔案系統的一致性
I/O裝置
I/O層次結構
盤
大廠常見面試題
省略..............................................................................................
關於作業系統,你必須知道的名詞
(由於內容太多了,就不一一展示了Σ( ° △ °|||)︴)
這兩份【作業系統筆記】檔案分別為400+、300+頁,需要完整版的朋友,可以點贊此文關注小編,見下圖,獲取!!
不要失望,
失望會使我們衰老,
趁我們還年輕,
擡起頭來,讓我們數星星;
也許,我們能數得清;
也許,我們能看到真相:
也許,我們能找到希望....