作業系統體系結構
時鐘管理:利用時鐘中斷實現計時功能
原語:原語是一種特殊的程式,具有原子性。也就是說,這段程式的執行必須一氣呵成,不可被“中斷”
非核心功能:Ubuntu、Centos 的開發團隊,其主要工作是實現非核心功能,而核心都是用了 Linux 核心
核心
核心是作業系統最基木,最核心的部分實現作業系統核心功能的那些程式就是核心程式。
注意:作業系統核心需要執行在核心態;作業系統的非核心功能執行在使用者態
根據作業系統不同:大核心,微核心
一個故事:
現在,應用程式想要請求作業系統的服務,這個服務的處理同時涉及到程序管理、儲存管理、裝置管理
注意:變態的過程是有成本的,要消耗不少時間,頻繁地變態會降低系統效能
大核心&微核心區別
分層結構
核心分多層,每層可單向呼叫更低一層提供的介面
優點
- 便於除錯和驗證,自底向上逐層除錯驗證
- 易擴充和易維護,各層之間呼叫介面清晰固定
缺點
- 僅可呼叫相鄰低層,難以合理定義各層的邊界
- 效率低,不可跨層呼叫,系統呼叫執行時間長
模組化
將核心劃分為多個模組,各模組之間相互協作。
核心=主模組+可載入核心模組
主模組:只負責核心功能,如程序排程、記憶體管理可載入
核心模組:可以動態載入新模組到核心,而無需重新編譯整個核心
優點:
1,模組間邏輯清晰易於維護,確定模組間介面後即可多模組同時開發
2,支援動態載入新的核心模組(如:安裝裝置驅動程式、安裝新的檔案系統模組到核心) ,增強OS適應性
3,任何模組都可以直接呼叫其他模組,無需採用訊息傳遞進行通訊,效率高
缺點:
1.模組間的介面定義未必合理、實用
2.模組間相互依賴,更難除錯和驗證
大核心(單核心)
所有的系統功能都放在核心裡(大核心結構的OS通常也採用了“模組化”的設計思想)
優點:
1.效能高,核心內部各種功能都可以直接相互呼叫
缺點:
1.核心龐大功能複雜,難以維護
2,大核心中某個功能模組出錯,就可能導致整個系統崩潰
微核心
只把中斷、原語、程序通訊等最核心的功能放入核心,程序管理、檔案管理、裝置管理等功能以使用者程序的形式執行在使用者態
優點
1.核心小功能少、易於維護,核心可靠性高
2.核心外的某個功能模組出錯不會導致整個系統崩潰
缺點:
1.效能低,需要頻繁的切換使用者態/核心態。使用者態下的各功能模組不可以直接相互呼叫,只能透過核心的“訊息傳遞“來間接通訊
- 使用者態下的各功能模組不可以直接相互呼叫只能透過核心的“訊息傳遞”來間接通訊
外核
核心負責程序排程、程序通訊等功能,
外核負責為使用者程序分配未經抽象的硬體資源,且由外核負責保證資源使用安全
什麼叫未經抽象的硬體資源
磁碟/記憶體的儲存空間
普通作業系統,想要申請使用記憶體空間,希望一片連續的。但是需要經過虛擬的。實際上記憶體裡的東西是離散的,,,
但是,用外核的作業系統可以直接分配未經抽象的!
如果使用者知道這個東西需要頻繁的隨機訪問,可以申請連續的磁碟塊!!!或者連續的記憶體空間!!
效果就是右邊那個粉色箭頭。
優點:
1,外核可直接給使用者程序分配"不虛擬、不抽象"的硬體資源,使使用者程序可以更靈活的使用硬體資源
2.減少了虛擬硬體資源的“對映層",提升效率
缺點:
- 降低了系統的一致性
- 使系統變得更復雜