單內核檢視原始碼討論檢視歷史
進程模式
單內核是個很大的進程。它的內部又能夠被分為若干模塊(或是層次或其他)。但是在運行的時候,他是個單獨的二進制大映象。其模塊間的通訊是通過直接調用其他模塊中的函數實現的,而不是消息傳遞。 在運行效率上,單內核會具有一定的好處。
- 中文名:單內核
- 外文名:Monolithic kernel
- 性 質:進程模式
- 特 點:內部分為若干模塊
簡介
單內核結構在硬件之上定義了一個高階的抽象界面,應用一組原語(或者叫系統調用)來實現操作系統的功能,例如進程管理,文件系統,和存儲管理等等,這些功能由多個運行在核心態的模塊來完成。
特性
單內核結構是非常有吸引力的一種設計,由於在同一個地址空間上實現所有低級操作的系統控制代碼的複雜性的效率會比在不同地址空間上實現更高些。單核結構正趨向於容易被正確設計,所以它的發展會比微內核結構更迅速些。 [1]
儘管每一個模塊都是單獨地服務這些操作,內核代碼是高度集成的,而且難以編寫正確。因為所有的模塊都在同一個內核空間上運行,一個很小的bug都會使整個系統崩潰。然而,如果開發順利,單內核結構就可以從運行效率上得到好處。
很多現代的單內核結構內核,如Linux和FreeBSD內核,能夠在運行時將模塊調入執行,這就可以使擴充內核的功能變得更簡單,也可以使內核的核心部分變得更簡潔[2] 。
例子
傳統的UNIX內核,例如伯克利大學發行的版本
單內核是兩大陣營中一種較為簡單的設計,在1980年之前,所有的內核都設計成單內核。所謂單內核就是把它從整體上作為一個單獨的大過程來實現,並同時運行在一個單獨的地址空間。因此,這樣的內核通常以單個靜態二進制文件的形式存放於磁盤。所有內核服務都在這樣的一個大內核空間中運行。內核之間的通信是微不足道的,因為大家都運行在內核態,並身處同一地址空間:內核可以直接調用[函數]],這與用戶空間沒有什麼區別。這種模式的支持者認為單模塊具有簡單和高性能的特點。大多數Unix系統都設計為單模塊。[3]
Linux內核
一,在Linus的觀點看來,通過把內核以單一的方式進行組織並在最初始的空間中運行是相當容易的事情。這種決策避免了有關消息傳遞體系結構,計算模塊裝載方式等方面的相關工作。(內核模塊系統在隨後的幾年中又進行了不斷地改進。)
二,Linux既沒有研發時間的限制,也沒有深受市場壓力的發行進度。任何的限制只有並但是分的對內核的修改和擴充。內核的單一設計在內部實現了充分的模塊化,在這種條件下的修改或增加都並不怎麼困難。而且問題還在於沒有必要為了追求尚未證實的可維護性的微小增長而重寫Linux的內核。
視頻
操作系統-內核