文章目錄
- 【王道操作系統】ch1計算機系統概述-04操作系統結構
- 操作系統的內核
- 操作系統的體系結構考綱新增內容(紅色為全新內容,黃色為原有內容):
- 01 分層結構
- 02 模塊化
- 03 宏內核(大內核)和微內核
- 04 外核
【王道操作系統】ch1計算機系統概述-04操作系統結構
操作系統的內核
操作系統內核是操作系統最基本、最核心的部分,實現操作系統內核功能的那些程序就是內核程序。
最底層的時鐘管理、中斷管理、原語是與硬件關聯最緊密的三個模塊,這些功能是必須放在內核當中的。還有一些管理相關的功能,如進程管理,存儲器管理。對于這些功能的管理,更多的是對數據結構的一個操作,而不會直接涉及到硬件。所以有的操作系統并不把這些管理功能放在內核當中,而只在內核當中保留與硬件接觸最緊密的這些部分。
因此,這就引出了兩種截然不同的內核的設計方法:
- 大內核
把所有的這些功能都包含在操作系統內核當中的這種結構,就叫做大內核(宏內核/單內核)。 - 微內核
而如果內核當中只保留與硬件關系最緊密的這些部分,那么這種內核就叫做微內核。
背景:一個應用程序想要請求操作系統服務,這個服務的處理同時涉及到進程管理、
存儲管理、設備管理。 - 在大內核的操作系統下,CPU的狀態將會發生2次改變
- 在微內核的操作系統下,CPU的狀態將會發生6次改變
而CPU狀態的切換是有成本的,頻繁地切換狀態會降低系統的性能。
操作系統的體系結構考綱新增內容(紅色為全新內容,黃色為原有內容):
01 分層結構
02 模塊化
03 宏內核(大內核)和微內核
04 外核
- 內核負責進程調度、進程通信等功能
- 外核負責為用戶進程分配未經抽象的硬件資源,且由外核負責保證資源使用安全
在普通的操作系統當中,如果用戶進程他想要申請使用一片內存空間。那么給他分配的內存空間是經過虛擬化的。用戶進程自己看到的視角,似乎是自己擁有了一整片連續的這個內存空間。但事實上,這只是虛擬的地址空間,操作系統內核會把這些虛擬空間映射到實際的物理空間中,這些物理空間在內存當中通常是離散的。
除了內存空間之外,給進程分配的文件存儲空間、外存空間也是經過抽象的。對于進程來說,他覺得自己的文件好像是連續的一個地址空間。但事實上,這個文件的各個塊。在磁盤當中,很有可能是被離散存放的,所以普通的操作系統給用戶進程分配的磁盤空間也是經過抽象的。
而外核可以給用戶進程直接分配未經抽象的硬件資源
。
優點:比如一個用戶進程知道自己的這一片存儲空間是經常需要隨機訪問的,一會訪問a地址,一會訪問b地址。
-
如果給這個用戶進程分配的磁盤空間在外存當中是離散的,那么用戶進程在隨機訪問這些文件塊的時候,意味著
這個磁頭需要來回橫跳,那這樣就會導致用戶進程對自己的文件隨機訪問的這種性能效能變低。
-
如果采用外核的這種策略,那么外核可以直接給用戶進程分配未經抽象的硬件資源。也就是說,如果這個用戶進程他知道自己的這個文件需要頻繁的被隨機訪問,那么我就可以向外核申請給我分配一整片連續的這個磁盤塊,比如說從0號塊到1024號塊,全部都是我的。
用戶進程文件數據直接存放到連續的幾個磁盤塊當中,那他之后想要隨機訪問自己這個文件里邊的任何一塊,磁頭移動的這些距離就會變少。
外核除了分配回收這些未經抽象的硬件資源之外,還需要負責保證這些硬件資源的使用安全。
- 比如a到b這個空間已經分配給了進程p1,此時另一個進程p2想要訪問這片區域。外核就需要及時的發現并且制止。
- 同時,進程p1如果要訪問a-b之外的其他空間,這個行為也應該被外核發現并制止。所以外核它分配了這些硬件資源之后,還需要保證這些硬件資源的使用安全。