跳轉至內容

作業系統設計/核心架構/微核心

來自華夏公益教科書
分別為單核心和基於微核心的作業系統的結構。

微核心方法是定義一個非常簡單的硬體抽象,並使用一組原語或系統呼叫來實現最小的作業系統服務,例如執行緒管理、地址空間和程序間通訊。所有其他服務(通常由核心提供的服務,例如網路)都實現為使用者空間程式,稱為伺服器。伺服器是與其他程式一樣的程式,允許透過簡單地啟動和停止程式來修改作業系統。例如,對於沒有網路支援的小型機器,網路伺服器根本不會啟動。在傳統系統下,這將需要重新編譯核心,這遠遠超出了普通終端使用者的能力。從理論上講,該系統也更穩定,因為故障伺服器只是停止單個程式,而不是導致核心本身崩潰。

然而,系統狀態的一部分會隨著故障伺服器丟失,並且通常很難繼續執行應用程式,甚至使用新副本繼續執行其他伺服器。例如,如果負責 TCP/IP 連線的(理論)伺服器重新啟動,應用程式可能會被告知連線“丟失”並重新連線,透過伺服器的新例項。但是,其他系統物件,如檔案,沒有這些方便的語義,應該可靠,不會隨機變得不可用,並保留之前寫入的所有資訊。因此,需要在伺服器之間使用像事務、複製和檢查點這樣的資料庫技術,以在單個伺服器重啟時保留基本狀態。

微核心通常比傳統設計效能差,有時甚至顯著差。這在很大程度上是由於為了在各個應用程式和伺服器之間移動資料而進出核心(上下文切換)的開銷。最初認為,仔細調整可以顯著減少這種開銷,但在 90 年代中期,大多數研究人員都放棄了。在最近,為效能而設計的較新的微核心在很大程度上解決了這些問題。然而,現有作業系統的市場已經根深蒂固,因此微核心設計方面的進展很少。

華夏公益教科書