微內核操作系統介紹

        微內核由一羣儘可能將數量最小化的軟件程序組成,它們負責提供實現一個操作系統所需要的各種機制與功能,微內核操作系統就是一種基於微內核架構的操作系統。

基本概念

微內核操作系統(Microkernel Operating System)結構,是20世紀80年代後期發展起來的。由於它能有效地支持多處理機運行,故非常適用於分佈式系統環境。當前比較流行的、能支持多處理機運行的操作系統,幾乎全部都採用了微內核結構,如卡耐基梅隆大學研製的MachOS,便屬於微內核結構操作系統;又如當前廣泛使用的Windows操作系統,也採用了微內核結構。 [1] 

1) 足夠小的內核

微內核操作系統中,內核是指精心設計的、能實現現代OS最基本的核心功能的部分。微內核並非是一個完整的OS,而只是操作系統中最基本的部分,它通常用於:

① 實現與硬件緊密相關的處理;

② 實現一些較基本的功能;

③ 負責客戶和服務器之間的通信。

它們只是爲構建通用OS提供一個重要基礎,這樣就可以確保把操作系統內核做得很小。

2) 基於客戶/服務器模式

由於客戶/服務器(Client/Server)模式,具有非常多的優點,故在單機微內核操作系統中幾乎無一例外地都採用客戶/服務器模式,將操作系統中最基本的部分放入內核中,而把操作系統的絕大部分功能都放在微內核外面的一組服務器(進程)中實現。例如用於提供對進程(線程)進行管理的進程(線程)服務器,提供虛擬存儲器管理功能的虛擬存儲器服務器,提供I/O設備管理的I/O設備管理服務器等,它們都是被作爲進程來實現的,運行在用戶態,客戶與服務器之間是藉助微內核提供的消息傳遞機制來實現信息交互的。

3) 應用“機制與策略分離”原理

在現代操作系統的結構設計中,經常利用“機制與策略分離”的原理來構造OS結構。所謂機制,是指實現某一功能的具體執行機構。而策略,則是在機制的基礎上,藉助於某些參數和算法來實現該功能的優化,或達到不同的功能目標。通常,機制處於一個系統的基層,而策略則處於系統的高層。在傳統的OS中,將機制放在OS的內核的較低層,把策略放在內核的較高層次中。而在微內核操作系統中,通常將機制放在OS的微內核中。正因爲如此,纔有可能將內核做得很小。

4) 採用面向對象技術

操作系統是一個極其複雜的大型軟件系統,我們不僅可以通過結構設計來分解操作系統的複雜度,還可以基於面向對象技術中的“抽象”和“隱蔽”原則控制系統的複雜性,再進一步利用“對象”、“封裝”和“繼承”等概念來確保操作系統的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,並提高操作系統的設計速度。正因爲面向對象技術能帶來如此多的好處,故面向對象技術被廣泛應用於現代操作系統的設計中。

基本功能

1) 進程(線程)管理

大多數的微內核OS,對於進程管理功能的實現,都採用“機制與策略分離”的原理。例如,爲實現進程(線程)調度功能,須在進程管理中設置一個或多個進程(線程)優先級隊列;能將指定優先級進程(線程)從所在隊列中取出,並將其投入執行。由於這一部分屬於調度功能的機制部分,應將它放入微內核中。應如何確定每類用戶(進程)的優先級,以及應如何修改它們的優先級等,都屬於策略問題,可將它們放入微內核外的進程(線程)管理服務器中。

2) 低級存儲器管理

通常在微內核中,只配置最基本的低級存儲器管理機制。如用於實現將用戶空間邏輯地址變換爲內存空間的物理地址頁表機制和地址變換機制,這一部分是依賴於機器的,因此放入微內核。而實現虛擬存儲器管理的策略,則包含應採取何種頁面置換算法,採用何種內存分配與回收策略等,應將這部分放在微內核外的存儲器管理服務器中去實現。

3) 中斷和陷入處理

大多數微內核操作系統都是將與硬件緊密相關的一小部分放入微內核中處理。此時微內核的主要功能,是捕獲所發生的中斷和陷入事件,並進行相應的前期處理。如進行中斷現場保護,識別中斷和陷入的類型,然後將有關事件的信息轉換成消息後,把它發送給相關的服務器。由服務器根據中斷或陷入的類型,調用相應的處理程序來進行後期處理。

微內核OS中是將進程管理存儲器管理以及I/O管理這些功能一分爲二,屬於機制的很小一部分放入微內核中,另外絕大部分放在微內核外的各種服務器中來實現。事實上,其中大多數服務器都比微內核大。這進一步說明了爲什麼能在採用客戶/服務器模式後,還能把微內核做得很小的原因。

優點

1) 提高了可擴展性

由於微內核OS的許多功能是由相對獨立的服務器軟件來實現的,當開發了新的硬件和軟件時,微內核OS只須在相應的服務器中增加新的功能,或再增加一個專門的服務器。與此同時,也必然改善系統的靈活性,不僅可在操作系統中增加新的功能,還可修改原有功能,以及刪除已過時的功能,以形成一個更爲精幹有效的操作系統。

2) 增強了可靠性

這一方面是由於微內核是出於精心設計和嚴格測試的,容易保證其正確性;另一方面是它提供了規範而精簡的應用程序接口(API),爲微內核外部的程序編制高質量的代碼創造了條件。此外,由於所有服務器都是運行在用戶態,服務器與服務器之間採用的是消息傳遞通信機制,因此,當某個服務器出現錯誤時,不會影響內核,也不會影響其它服務器。

3) 增強了可移植性

隨着硬件的快速發展,出現了各種各樣的硬件平臺,作爲一個好的操作系統,必須具備可移植性,使其能較容易地運行在不同的計算機硬件平臺上。在微內核結構的操作系統中,所有與特定CPU和I/O設備硬件有關的代碼,均放在內核和內核下面的硬件隱藏層中,而操作系統其它絕大部分(即各種服務器)均與硬件平臺無關,因而,把操作系統移植到另一個計算機硬件平臺上所需作的修改是比較小的。

4) 提供了對分佈式系統的支持

由於在微內核OS中,客戶和服務器之間以及服務器和服務器之間的通信,是採用消息傳遞通信機制進行的,致使微內核OS能很好地支持分佈式系統和網絡系統。事實上,只要在分佈式系統中賦予所有進程和服務器惟一的標識符,在微內核中再配置一張系統映射表(即進程和服務器的標識符與它們所駐留的機器之間的對應表),在進行客戶與服務器通信時,只需在所發送的消息中標上發送進程和接收進程的標識符,微內核便可利用系統映射表,將消息發往目標,而無論目標是駐留在哪臺機器上。

5) 融入了面向對象技術

在設計微內核OS時,採用了面向對象的技術,其中的“封裝”,“繼承”,“對象類”和“多態性”,以及在對象之間採用消息傳遞機制等,都十分有利於提高系統的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,而且還能顯著地減少開發系統所付出的開銷。

存在的問題

應當指出,在微內核OS中,由於採用了非常小的內核,以及客戶/服務器模式和消息傳遞機制,這些雖給微內核OS帶來了許多優點,但由此也使微內核OS存在着潛在的缺點。其中最主要的是,較之早期OS,微內核OS的運行效率有所降低。

效率降低的最主要的原因是,在完成一次客戶對OS提出的服務請求時,需要利用消息實現多次交互和進行用戶/內核模式及上下文的多次切換。然而,在早期的OS中,用戶進程在請求取得OS服務時,一般只需進行兩次上下文的切換:一次是在執行系統調用後,由用戶態轉向系統態時;另一次是在系統完成用戶請求的服務後,由系統態返回用戶態時。在微內核OS中,由於客戶和服務器及服務器和服務器之間的通信,都需通過微內核,致使同樣的服務請求至少需要進行四次上下文切換。第一次是發生在客戶發送請求消息給內核,以請求取得某服務器特定的服務時;第二次是發生在由內核把客戶的請求消息發往服務器時;第三次是當服務器完成客戶請求後,把響應消息發送到內核時;第四次是在內核將響應消息發送給客戶時。

實際情況是往往還會引起更多的上下文切換。例如,當某個服務器自身尚無能力完成客戶請求,而需要其它服務器的幫助時,其中的文件服務器還需要磁盤服務器的幫助,這時就需要進行八次上下文的切換。 [1] 

爲了改善運行效率,可以重新把一些常用的操作系統基本功能,由服務器移入微內核中。這樣可使客戶對常用操作系統功能的請求所發生的用戶/內核模式和上下文的切換的次數,由四次或八次降爲兩次。但這又會使微內核的容量明顯地增大,在小型接口定義和適應性方面的優點也有所下降,同時也提高了微內核的設計代價。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章