微內核
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/8/84/Kernel-microkernel-CN.png)
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/d/d0/OS-structure2.svg/450px-OS-structure2.svg.png)
在電腦科學中,微內核(英語:Microkernel,μ-kernel),是一種內核的設計架構,由盡可能精簡的程式所組成,以實現一個作業系統所需要的最基本功能,包括了底層的定址空間管理、執行緒管理、與行程間通訊。
概論
微核心的設計理念,是將系統服務的實作,與系統的基本操作規則區分開來。它實作的方式,是將核心功能模組化,劃分成幾個獨立的行程,各自運行,這些行程被稱為服務(service)。所有的服務行程,都運行在不同的地址空間。只有需要絕對特權的行程,才能在具特權的執行模式下運行,其餘的行程則在用戶空間運行。
這樣的設計,使內核中最核心的功能,設計上變的更簡單。需要特權的行程,只有基本的執行緒管理,主記憶體管理和行程間通訊等,這個部份,由一個簡單的硬件抽象層與關鍵的系統調用組成。其餘的服務行程,則移至用戶空間。
讓服務各自獨立,可以減少系統之間的耦合度,易於實作與除錯,也可增進可移植性。它可以避免單一組件失效,而造成整個系統崩潰,內核只需要重新啟動這個組件,不致於影響其他伺服器的功能,使系統穩定度增加。同時,作業系統也可以視需要,抽換或新增某些服務行程,使功能更有彈性。
因為所有服務行程都各自在不同地址空間運行,因此在微核心架構下,不能像整塊性核心一樣直接進行函數調用。在微核心架構下,要建立一個行程間通訊機制,通過訊息傳遞的機制來讓服務行程間相互交換訊息,調用彼此的服務,以及完成同步。採用主從式架構,使得它在分散式系統中有特別的優勢,因為遠端系統與本地行程間,可以採用同一套行程間通訊機制。
但是因為行程間通訊耗費的資源與時間,比簡單的函數呼叫還多;通常又會涉及到核心空間到用戶空間的環境切換(context switch)。這使得訊息傳遞有延遲,以及傳輸量(throughput)受限的問題,因此微核心在通訊寬容度不足下,可能出現效能不佳的問題。
就程式碼數量來看,一般來說,因為功能簡化,微核心使用的程式碼比整合式核心更少,其原始碼通常小於10,000行。例如,MINIX 3的原始碼少於6,000行[1]。更少的程式碼,也代表更少的潛藏程式bug,對於重視安全性的人來說會較為偏好。
微核心列表
微內核結構必然是多執行緒的,第一代微內核,在內核提供了較多的服務,因此被稱為「胖微內核」,它的典型代表是Mach,它既是GNU HURD也是Mac OS X的內核。第二代微內核只提供最基本的OS服務,典型的OS是QNX,QNX在黑莓手機BlackBerry 10系統中被採用。L4微內核系列也是著名的微核心。
變種微核心
包括Windows NT,Mac OS X等,都宣稱採用微核心架構。為了追求效能,他們將需要具備特權的服務組件放進核心空間,違反了微內核的基本設計原則,更為接近整塊性核心的設計方式。這被稱為混合核心。
相關條目
參考文獻
- ^ The MINIX 3 Operating System. minix3.org. [2016-04-01]. (原始內容存檔於2012-01-22).
|
|