微內(nèi)核操作系統(tǒng)(Microkernel Operating System)結(jié)構(gòu),是20世紀(jì)80年代后期發(fā)展起來(lái)的。由于它能有效地支持多處理機(jī)運(yùn)行,故非常適用于分布式系統(tǒng)環(huán)境。
當(dāng)前比較流行的、能支持多處理機(jī)運(yùn)行的操作系統(tǒng),幾乎全部都采用了微內(nèi)核結(jié)構(gòu),如卡耐基梅隆大學(xué)研制的Mach OS,便屬于微內(nèi)核結(jié)構(gòu)操作系統(tǒng);又如當(dāng)前廣泛使用的Windows操作系統(tǒng),也采用了微內(nèi)核結(jié)構(gòu)。
那么,問(wèn)題來(lái)了,嵌入式領(lǐng)域的RTOS屬于微內(nèi)核操作系統(tǒng)嗎?
要想搞明白這個(gè)問(wèn)題,首先你要了解什么是是微內(nèi)核操作系統(tǒng)。
1.微內(nèi)核操作系統(tǒng)的基本概念
為了提高操作系統(tǒng)的“正確性”、“靈活性”、“易維護(hù)性”和”可擴(kuò)充性”,在進(jìn)行現(xiàn)代操作系統(tǒng)結(jié)構(gòu)設(shè)計(jì)時(shí),即使在單處理機(jī)環(huán)境下,大多也采用基于客戶/服務(wù)器模式(即C/S模式)的微內(nèi)核結(jié)構(gòu),將操作系統(tǒng)劃分為兩大部分:微內(nèi)核和多個(gè)服務(wù)器。
至于什么是微內(nèi)核操作系統(tǒng)結(jié)構(gòu),現(xiàn)在尚無(wú)一致公認(rèn)的定義,但我們可以從下面四個(gè)方面,對(duì)微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)進(jìn)行描述。
1) 足夠小的內(nèi)核
在微內(nèi)核操作系統(tǒng)中,內(nèi)核是指精心設(shè)計(jì)的、能實(shí)現(xiàn)現(xiàn)代OS最基本的核心功能的部分。
微內(nèi)核并非是一個(gè)完整的OS,而只是操作系統(tǒng)中最基本的部分,它通常用于:
① 實(shí)現(xiàn)與硬件緊密相關(guān)的處理;
② 實(shí)現(xiàn)一些較基本的功能;
③ 負(fù)責(zé)客戶和服務(wù)器之間的通信。
它們只是為構(gòu)建通用OS提供一個(gè)重要基礎(chǔ),這樣就可以確保把操作系統(tǒng)內(nèi)核做得很小。
2) 基于客戶/服務(wù)器模式
由于客戶/服務(wù)器(Client/Server)模式,具有非常多的優(yōu)點(diǎn),故在單機(jī)微內(nèi)核操作系統(tǒng)中幾乎無(wú)一例外地都采用客戶/服務(wù)器模式,將操作系統(tǒng)中最基本的部分放入內(nèi)核中,而把操作系統(tǒng)的絕大部分功能都放在微內(nèi)核外面的一組服務(wù)器(進(jìn)程)中實(shí)現(xiàn)。例如用于提供對(duì)進(jìn)程(線程)進(jìn)行管理的進(jìn)程(線程)服務(wù)器,提供虛擬存儲(chǔ)器管理功能的虛擬存儲(chǔ)器服務(wù)器,提供I/O設(shè)備管理的I/O設(shè)備管理服務(wù)器等,它們都是被作為進(jìn)程來(lái)實(shí)現(xiàn)的,運(yùn)行在用戶態(tài),客戶與服務(wù)器之間是借助微內(nèi)核提供的消息傳遞機(jī)制來(lái)實(shí)現(xiàn)信息交互的。
3) 應(yīng)用“機(jī)制與策略分離”原理
在現(xiàn)代操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)中,經(jīng)常利用“機(jī)制與策略分離”的原理來(lái)構(gòu)造OS結(jié)構(gòu)。所謂機(jī)制,是指實(shí)現(xiàn)某一功能的具體執(zhí)行機(jī)構(gòu)。而策略,則是在機(jī)制的基礎(chǔ)上,借助于某些參數(shù)和算法來(lái)實(shí)現(xiàn)該功能的優(yōu)化,或達(dá)到不同的功能目標(biāo)。通常,機(jī)制處于一個(gè)系統(tǒng)的基層,而策略則處于系統(tǒng)的高層。在傳統(tǒng)的OS中,將機(jī)制放在OS的內(nèi)核的較低層,把策略放在內(nèi)核的較高層次中。而在微內(nèi)核操作系統(tǒng)中,通常將機(jī)制放在OS的微內(nèi)核中。正因?yàn)槿绱?,才有可能將?nèi)核做得很小。
4) 采用面向?qū)ο蠹夹g(shù)
操作系統(tǒng)是一個(gè)極其復(fù)雜的大型軟件系統(tǒng),我們不僅可以通過(guò)結(jié)構(gòu)設(shè)計(jì)來(lái)分解操作系統(tǒng)的復(fù)雜度,還可以基于面向?qū)ο蠹夹g(shù)中的“抽象”和“隱蔽”原則控制系統(tǒng)的復(fù)雜性,再進(jìn)一步利用“對(duì)象”、“封裝和“繼承”等概念來(lái)確保操作系統(tǒng)的“正確性”、“可靠性”、“易修改性”、“易擴(kuò)展性”等,并提高操作系統(tǒng)的設(shè)計(jì)速度。正因?yàn)槊嫦驅(qū)ο蠹夹g(shù)能帶來(lái)如此多的好處,故面向?qū)ο蠹夹g(shù)被廣泛應(yīng)用于現(xiàn)代操作系統(tǒng)的設(shè)計(jì)中。
2.微內(nèi)核的基本功能
1) 進(jìn)程(線程)管理
大多數(shù)的微內(nèi)核OS,對(duì)于進(jìn)程管理功能的實(shí)現(xiàn),都采用“機(jī)制與策略分離”的原理。例如,為實(shí)現(xiàn)進(jìn)程(線程)調(diào)度功能,須在進(jìn)程管理中設(shè)置一個(gè)或多個(gè)進(jìn)程(線程)優(yōu)先級(jí)隊(duì)列;能將指定優(yōu)先級(jí)進(jìn)程(線程)從所在隊(duì)列中取出,并將其投入執(zhí)行。由于這一部分屬于調(diào)度功能的機(jī)制部分,應(yīng)將它放入微內(nèi)核中。應(yīng)如何確定每類用戶(進(jìn)程)的優(yōu)先級(jí),以及應(yīng)如何修改它們的優(yōu)先級(jí)等,都屬于策略問(wèn)題,可將它們放入微內(nèi)核外的進(jìn)程(線程)管理服務(wù)器中。
2) 低級(jí)存儲(chǔ)器管理
通常在微內(nèi)核中,只配置最基本的低級(jí)存儲(chǔ)器管理機(jī)制。如用于實(shí)現(xiàn)將用戶空間的邏輯地址變換為內(nèi)存空間的物理地址的頁(yè)表機(jī)制和地址變換機(jī)制,這一部分是依賴于機(jī)器的,因此放入微內(nèi)核。而實(shí)現(xiàn)虛擬存儲(chǔ)器管理的策略,則包含應(yīng)采取何種頁(yè)面置換算法,采用何種內(nèi)存分配與回收策略等,應(yīng)將這部分放在微內(nèi)核外的存儲(chǔ)器管理服務(wù)器中去實(shí)現(xiàn)。
3) 中斷和陷入處理
大多數(shù)微內(nèi)核操作系統(tǒng)都是將與硬件緊密相關(guān)的一小部分放入微內(nèi)核中處理。此時(shí)微內(nèi)核的主要功能,是捕獲所發(fā)生的中斷和陷入事件,并進(jìn)行相應(yīng)的前期處理。如進(jìn)行中斷現(xiàn)場(chǎng)保護(hù),識(shí)別中斷和陷入的類型,然后將有關(guān)事件的信息轉(zhuǎn)換成消息后,把它發(fā)送給相關(guān)的服務(wù)器。由服務(wù)器根據(jù)中斷或陷入的類型,調(diào)用相應(yīng)的處理程序來(lái)進(jìn)行后期處理。
在微內(nèi)核OS中是將進(jìn)程管理、存儲(chǔ)器管理以及I/O管理這些功能一分為二,屬于機(jī)制的很小一部分放入微內(nèi)核中,另外絕大部分放在微內(nèi)核外的各種服務(wù)器中來(lái)實(shí)現(xiàn)。事實(shí)上,其中大多數(shù)服務(wù)器都比微內(nèi)核大。這進(jìn)一步說(shuō)明了為什么能在采用客戶/服務(wù)器模式后,還能把微內(nèi)核做得很小的原因。
3.微內(nèi)核操作系統(tǒng)的優(yōu)點(diǎn)
1) 提高了系統(tǒng)的可擴(kuò)展性
由于微內(nèi)核OS的許多功能是由相對(duì)獨(dú)立的服務(wù)器軟件來(lái)實(shí)現(xiàn)的,當(dāng)開(kāi)發(fā)了新的硬件和軟件時(shí),微內(nèi)核OS只須在相應(yīng)的服務(wù)器中增加新的功能,或再增加一個(gè)專門(mén)的服務(wù)器。與此同時(shí),也必然改善系統(tǒng)的靈活性,不僅可在操作系統(tǒng)中增加新的功能,還可修改原有功能,以及刪除已過(guò)時(shí)的功能,以形成一個(gè)更為精干有效的操作系統(tǒng)。
2) 增強(qiáng)了系統(tǒng)的可靠性
這一方面是由于微內(nèi)核是出于精心設(shè)計(jì)和嚴(yán)格測(cè)試的,容易保證其正確性;另一方面是它提供了規(guī)范而精簡(jiǎn)的應(yīng)用程序接口(API),為微內(nèi)核外部的程序編制高質(zhì)量的代碼創(chuàng)造了條件。此外,由于所有服務(wù)器都是運(yùn)行在用戶態(tài),服務(wù)器與服務(wù)器之間采用的是消息傳遞通信機(jī)制,因此,當(dāng)某個(gè)服務(wù)器出現(xiàn)錯(cuò)誤時(shí),不會(huì)影響內(nèi)核,也不會(huì)影響其它服務(wù)器。
3) 可移植性
隨著硬件的快速發(fā)展,出現(xiàn)了各種各樣的硬件平臺(tái),作為一個(gè)好的操作系統(tǒng),必須具備可移植性,使其能較容易地運(yùn)行在不同的計(jì)算機(jī)硬件平臺(tái)上。在微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中,所有與特定CPU和I/O設(shè)備硬件有關(guān)的代碼,均放在內(nèi)核和內(nèi)核下面的硬件隱藏層中,而操作系統(tǒng)其它絕大部分(即各種服務(wù)器)均與硬件平臺(tái)無(wú)關(guān),因而,把操作系統(tǒng)移植到另一個(gè)計(jì)算機(jī)硬件平臺(tái)上所需作的修改是比較小的。
4) 提供了對(duì)分布式系統(tǒng)的支持
由于在微內(nèi)核OS中,客戶和服務(wù)器之間以及服務(wù)器和服務(wù)器之間的通信,是采用消息傳遞通信機(jī)制進(jìn)行的,致使微內(nèi)核OS能很好地支持分布式系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)。事實(shí)上,只要在分布式系統(tǒng)中賦予所有進(jìn)程和服務(wù)器惟一的標(biāo)識(shí)符,在微內(nèi)核中再配置一張系統(tǒng)映射表(即進(jìn)程和服務(wù)器的標(biāo)識(shí)符與它們所駐留的機(jī)器之間的對(duì)應(yīng)表),在進(jìn)行客戶與服務(wù)器通信時(shí),只需在所發(fā)送的消息中標(biāo)上發(fā)送進(jìn)程和接收進(jìn)程的標(biāo)識(shí)符,微內(nèi)核便可利用系統(tǒng)映射表,將消息發(fā)往目標(biāo),而無(wú)論目標(biāo)是駐留在哪臺(tái)機(jī)器上。
5) 融入了面向?qū)ο蠹夹g(shù)
在設(shè)計(jì)微內(nèi)核OS時(shí),采用了面向?qū)ο蟮募夹g(shù),其中的“封裝”,“繼承”,“對(duì)象類”和“多態(tài)性”,以及在對(duì)象之間采用消息傳遞機(jī)制等,都十分有利于提高系統(tǒng)的“正確性”、“可靠性”、“易修改性”、“易擴(kuò)展性”等,而且還能顯著地減少開(kāi)發(fā)系統(tǒng)所付出的開(kāi)銷。
4.微內(nèi)核操作系統(tǒng)存在的問(wèn)題
應(yīng)當(dāng)指出,在微內(nèi)核OS中,由于采用了非常小的內(nèi)核,以及客戶/服務(wù)器模式和消息傳遞機(jī)制,這些雖給微內(nèi)核OS帶來(lái)了許多優(yōu)點(diǎn),但由此也使微內(nèi)核OS存在著潛在的缺點(diǎn)。其中最主要的是,較之早期OS,微內(nèi)核OS的運(yùn)行效率有所降低。
效率降低的最主要的原因是,在完成一次客戶對(duì)OS提出的服務(wù)請(qǐng)求時(shí),需要利用消息實(shí)現(xiàn)多次交互和進(jìn)行用戶/內(nèi)核模式及上下文的多次切換。然而,在早期的OS中,用戶進(jìn)程在請(qǐng)求取得OS服務(wù)時(shí),一般只需進(jìn)行兩次上下文的切換:一次是在執(zhí)行系統(tǒng)調(diào)用后,由用戶態(tài)轉(zhuǎn)向系統(tǒng)態(tài)時(shí);另一次是在系統(tǒng)完成用戶請(qǐng)求的服務(wù)后,由系統(tǒng)態(tài)返回用戶態(tài)時(shí)。在微內(nèi)核OS中,由于客戶和服務(wù)器及服務(wù)器和服務(wù)器之間的通信,都需通過(guò)微內(nèi)核,致使同樣的服務(wù)請(qǐng)求至少需要進(jìn)行四次上下文切換。第一次是發(fā)生在客戶發(fā)送請(qǐng)求消息給內(nèi)核,以請(qǐng)求取得某服務(wù)器特定的服務(wù)時(shí);第二次是發(fā)生在由內(nèi)核把客戶的請(qǐng)求消息發(fā)往服務(wù)器時(shí);第三次是當(dāng)服務(wù)器完成客戶請(qǐng)求后,把響應(yīng)消息發(fā)送到內(nèi)核時(shí);第四次是在內(nèi)核將響應(yīng)消息發(fā)送給客戶時(shí)。
實(shí)際情況是往往還會(huì)引起更多的上下文切換。例如,當(dāng)某個(gè)服務(wù)器自身尚無(wú)能力完成客戶請(qǐng)求,而需要其它服務(wù)器的幫助時(shí),其中的文件服務(wù)器還需要磁盤(pán)服務(wù)器的幫助,這時(shí)就需要進(jìn)行八次上下文的切換。
審核編輯:黃飛
?
評(píng)論
查看更多