1. 程式人生 > >微核心體系結構和Windows

微核心體系結構和Windows

Q:什麼是微核心?
A:微核心結構由一個非常簡單的硬體抽象層和一組比較關鍵的原語或系統呼叫組成,這些原語僅僅包括了建立一個系統必需的幾個部分,如 執行緒管理,地址空間和程序間通訊等。
微核的目標是將系統服務的實現和系統的基本操作規則分離開來。例如,程序的輸入/輸出鎖定服務可以由執行在微核之外的一個服務元件來提供。這些非常模組化的使用者態服務用於完成作業系統中比較高階的操作,這樣的設計使核心中最核心的部分的設計更簡單。一個服務元件的失效並不會導致整個系統的崩潰,核心需要做的,僅僅是重新啟動這個元件,而不必影響其它的部分。
微核心
                              微核心
微核心將許多OS服務放入分離的程序,如檔案系統,裝置驅動程式,而程序通過訊息傳遞呼叫OS服務.微核心結構必然是多執行緒的,第一代微核心,在核心提供了較多的服務,因此被稱為'胖微核心',它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的核心,可以說,蒸蒸日上.第二代為核心只提供最基本的OS服務,典型的OS是QNX,QNX在理論界很有名,被認為是一種先進的OS.
微核心結構的例子:
    * AIX
    * BeOS
    * L4微核心系列
    * Mach, 用於GNU Hurd和Mac OS X
    * Minix
    * MorphOS
    * QNX
    * RadiOS
    * VSTa

Q:微核心有何優點?Windows是微核心體系結構嗎?
A:在微核心結構中,作業系統的核心只需要提供最基本、最核心的一部分操作(比如建立和刪除任務、記憶體管理、中斷管理等)即可,而其他的管理程式(如檔案系統、網路協議棧等)則儘可能的放在核心之外。這些外部程式可以獨立執行,並對外部使用者程式提供作業系統服務,服務之間使用程序間通訊機制(IPC)進行互動,只在需要核心的協助時,才通過一套介面對核心發出呼叫請求。
微核心系統的優點時作業系統具有良好的靈活性。它使得作業系統內部結構簡單清晰。程式程式碼的維護非常之方便。但是也有不足之處。微核心系統由於核心態只實現了最基本的系統操作,這樣核心以外的外部程式之間由於獨立執行使得系統難以進行良好的整體優化。另外,程序間互相通訊的開銷也較單一核心系統要大許多。從整體上看,在當前的硬體條件下,微核心在效率上的損失小於其在結構上獲得的收益,故而選取微核心成為作業系統的一大潮流。
並非所有的Windows架構都是微核心體系結構,如Windows9X,但Windows NT架構是改良的微核心體系結構,正因為此,才使得硬體的差異性體現的不明顯以及相容性大大優於Linux(Linux是單一核心體系,絕大部分的核心程式碼都是被靜態編譯聯入的,Linus及其追隨者為了程式碼的整體效率犧牲掉了體系結構的明晰性),雖然它有無數附加功能,但是這些功能是被模組化設計的分層設計了的,它們的存在並不妨礙Windows是微核心體系結構這一事實,所以Windows也是相當優秀的,只不過鉅額利潤使之成為千夫所指。
單核心


                                單核心

嚴格意義上講,Windows NT架構是混合核心,當然本質上還是微核心,只不過它讓一些微核結構執行在使用者空間的程式碼執行在核心空間,這樣讓核心的執行效率更高些。這是一種妥協做法,設計者參考了微核心結構的系統執行速度不佳的理論。然而後來的實驗證明,純微核心的系統實際上也可以是高效率的。大多數現代作業系統遵循這種設計範疇,Microsoft Windows NT就是一個很好的例子。
混合核心
                              混合核心