作業系統核心

混合核心(hybrid kernel)

混合核心是介於兩個極端之間的務實折衷。它的結構有點像微核心——其設計血統裡帶有可分離子系統與訊息傳遞的理念——但為了速度,它把效能關鍵的服務(例如檔案系統與圖形)留在核心空間裡執行,而非放到外面獨立的使用者模式伺服器。簡言之:以微核心的理念來組織,但對於那些跨越邊界會造成痛苦的部分,大致以單體方式執行。

最清楚的真實例子是 Windows NT 核心與 Apple 的 XNU。XNU(讀作 ex-en-you,是 macOS 與 iOS 的核心)字面上就是把 Mach 微核心和一大塊 BSD Unix 程式碼栓在一起、一同跑在核心模式下——你得到 Mach 在訊息與記憶體上的抽象,但 BSD 的檔案系統與網路是以快速的核心內程式碼執行,而非遠端伺服器。Windows NT 以受微核心影響的分層結構設計,但主要子系統被移進核心空間(為了效能,圖形子系統著名地被移了進去),使得常見操作不必付出訊息傳遞的代價。

誠實的提醒是:「混合核心」是個鬆散、帶點行銷味的標籤,並非人人都同意它是一個獨立的類別——批評者(包括一些微核心的純粹主義者)主張,若檔案系統與驅動都以完整特權跑在核心空間裡,你本質上就有了一個單體核心,只不過是用微核心的術語來組織罷了。真正有用的領悟是那條光譜,而不是那個盒子:真實的核心會逐一子系統地抉擇,要用多少隔離去換多少速度。

XNU(macOS/iOS)= Mach 微核心 + BSD 檔案系統/網路 + I/O Kit 驅動,全部一起跑在核心模式下——微核心血統,單體式效能。

混合核心保留微核心風味的結構,但讓熱門子系統跑在核心空間以避開訊息傳遞的負擔。

把「混合核心」看作對意圖與血統的描述,而非精確的技術保證。若檔案系統、網路堆疊與驅動全都以特權跑在核心空間,微核心的隔離好處就大致消失了——這正是為何有些專家說混合核心其實只是套著微核心詞彙的單體核心。

又稱
modified microkernelmacrokernel混合式核心