微核心作業系統

微核心作業系統

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

基本介紹

  • 中文名:微核心作業系統
  • 外文名:Microkernel Operating System
  • 出現於:20世紀80年代後期
  • 適用於分散式系統環境
基本概念,1) 足夠小的核心,2) 基於客戶/伺服器模式,3) 套用“機制與策略分離”原理,4) 採用面向對象技術,基本功能,1) 進程(執行緒)管理,2) 低級存儲器管理,3) 中斷和陷入處理,優點,1) 提高了可擴展性,2) 增強了可靠性,3) 增強了可移植性,4) 提供了對分散式系統的支持,5) 融入了面向對象技術,存在的問題,

基本概念

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

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中,由於客戶和伺服器及伺服器和伺服器之間的通信,都需通過微核心,致使同樣的服務請求至少需要進行四次上下文切換。第一次是發生在客戶傳送請求訊息給核心,以請求取得某伺服器特定的服務時;第二次是發生在由核心把客戶的請求訊息發往伺服器時;第三次是當伺服器完成客戶請求後,把回響訊息傳送到核心時;第四次是在核心將回響訊息傳送給客戶時。
實際情況是往往還會引起更多的上下文切換。例如,當某個伺服器自身尚無能力完成客戶請求,而需要其它伺服器的幫助時,其中的檔案伺服器還需要磁碟伺服器的幫助,這時就需要進行八次上下文的切換。
為了改善運行效率,可以重新把一些常用的作業系統基本功能,由伺服器移入微核心中。這樣可使客戶對常用作業系統功能的請求所發生的用戶/核心模式和上下文的切換的次數,由四次或八次降為兩次。但這又會使微核心的容量明顯地增大,在小型接口定義和適應性方面的優點也有所下降,同時也提高了微核心的設計代價。

相關詞條

熱門詞條

聯絡我們