微內核(Micro Kernel)是操作系統中僅包含為所有應用所必需的資源控制與通信功能的內核。內核是操作系統中最靠近硬件且享有最高特權的一層微內核功能以外的功能作為服務程序在內核外實現,供使用時調用。這樣,可使操作系統之內核為最小。
簡介
20世紀70年代,隨著操作系統的功能日益增強,系統日益復雜龐大,其內核亦隨之增大,從而出現了微內核概念。其優點是使操作系統易于理解、實現、維護和移植,系統服務剪裁與配置較為靈活,利于適應不同應用的要求。但是,置于內核外的系統服務效率將會下降,含于內核內的功能的靈活性受到限制。因此,在設計具微內核結構的操作系統時重要的考慮因素是性能與靈活性之間的權衡以及易維護性與系統開銷之間的權衡。
為使在不具微內核結構的操作系統上運行的應用程序也能在具微內核結構的操作系統上繼續使用,通常在具微內核的操作系統與應用程序之間提供一個針對不具微內核結構的操作系統(如unix)的仿真接口,將應用程序的系統調用轉換成對具微內核結構的操作系統的調用。
優勢
微內核的主要優勢有以下幾點:
(1)能夠使得不同的API,文件系統,甚至不同的操作系統的特性在一個系統中共存。
(2)系統非常靈活。當運行一個應用程序時,只需把選定的系統服務加載到系統中即可。而修改了服務以后可以通過聯機進行測試,并不需要重新構建或者啟動一個新的內核,他們并不影響系統的運行。
(3)系統服務或者設備驅動故障和與它們有關的運行任務是隔絕的。
(4)依存關系的服務器系統可以加以限制,使為安全重要至關信賴的計算基數的應用可被削減。
(5)由微內核所決定的結構(IPC,多線程)能夠應用在所有的應用程序和服務上,一個精煉的微內核接口能夠有演繹成更多模塊的系統結構。
結構
微內核是內核的一種精簡形式。將通常與內核集成在一起的系統服務層被分離出來,變成可以根據需求加入的選件,這樣就可提供更好的可擴展性和更加有效的應用環境。使用微內核設計,對系統進行升級,只要用新模塊替換舊模塊,不需要改變整個操作系統。
可以用商業對比來解釋微內核的模塊概念。考慮一個過度忙碌的商務經理。通過將工作分給其他人,這位經理可以將他的能力更有效地用于重要的商務工作中去,并集中于其他一些任務,例如開辟新的商務分支等。可以雇傭一些新人來支持增長的商務活動。經理協調這些工作,但由其他的人做好雇傭他們時說好要做的事。與此類似,微內核操作系統支持執行少量核心任務,并管理可安裝模塊的活動。用這種方式,微內核對于它能做的工作是非常有效的,并是可移植的,這是指它可以被設計成在不同的處理器上運行。
基于微內核的操作系統具有如下特征:
微內核提供一組“最基本”的服務,如進程調度、進程間通信、存儲管理、處理I/O設備。其他服務,如文件管理、網絡支持等通過接口連到微內核。與此相反,內核是集成的,比微內核更大。
微內核具有很好的擴展性,并可簡化應用程序開發。用戶只運行他們需要的服務,這有利于減少磁盤空間和存儲器需求。
廠商可以很容易地將微內核移植到其他處理器平臺,并在上面增加適合其他平臺需要的模塊化部件。(這指文件服務器、工程應用等等)。
微內核和硬件部件有接口,并向可安裝模塊提供一個接口。在微內核中,進程通過傳遞消息或運行“線程”來發生相互作用。線程為將一個任務分解為多個子任務提供了途徑,在多處理器環境下,線程可以在不同的處理器上獨立運行。
像MACH和nucleus這樣的微內核操作系統,使用戶可以自己選擇操作系統的接口和特性。它們十分適合可以選擇多處理器和多操作系統的變化的計算機市場,開發商也可從中受益。它們能夠很快地從一個系統向另一個系統移植他們的產品,使最終用戶可以得到許多應用產品。這種模塊化的設計也保證了可以得到大量的可選服務。
系統
卡耐基·梅隆大學開發的Mach是一個著名的具微內核結構的操作系統,Mach與UNIX BSD完全兼容,但Mach3.0采用一個很小的內核,將UNIX操作系統功能都移到內核以外,并實現了多種仿真接口。例如,Apple MacOS X服務器操作系統也采用了Mac內核。
微軟 Winds NT可以看作一個混用層次結構與微內核結構的例子。Winds NT可以運行win32、OS/2、POSIX等應用。其內核支持客戶應用與應用服務器之間的消息傳遞,而在內核以外運行針對各種應用類型的服務器。
參考資料 >