新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 微內(nèi)核的結(jié)構(gòu)

微內(nèi)核的結(jié)構(gòu)

作者: 時間:2012-09-06 來源:網(wǎng)絡(luò) 收藏

通用操作系統(tǒng)要滿足各種不同用戶的要求,因此對它在功能上的要求是“通用”,所以其功能是越多越好。而嵌入式操作系統(tǒng)就有所不同,因為嵌入式操作系統(tǒng)的用戶群以及對功能的要求有某種程度的“專用”性,所以在一個特定的應(yīng)用中,嵌入式操作系統(tǒng)需要哪些功能、不需要哪些功能基本上是固定的。因此,這就給設(shè)計小創(chuàng)造了條件。

本文引用地址:http://m.butianyuan.cn/article/148451.htm

相對于通用計算機系統(tǒng)而言,內(nèi)存在嵌人式系統(tǒng)中是更為稀缺珍貴的資源。因此,作為需要常駐內(nèi)存的操作系統(tǒng)的,在滿足應(yīng)用的前提下越小越好。

另外,為了滿足不同的應(yīng)用需要,嵌人式實時操作系統(tǒng)作為嵌人式系統(tǒng)重要的軟件,應(yīng)支持可裁剪性。換句話說,嵌人式實時操作系統(tǒng)的設(shè)計在上應(yīng)高度模塊化,并要提供非常靈活的手段,讓系統(tǒng)開發(fā)者能根據(jù)實際需要進行選用。當(dāng)然,也應(yīng)允許用戶根據(jù)需要編寫自己的功能模塊,并可以很方便地集成到系統(tǒng)中。

目前,從操作系統(tǒng)現(xiàn)有的來看,對于嵌入式實時操作系統(tǒng)來說,使用微應(yīng)該是一個較好的選擇。

在這里需要強調(diào)的是,微內(nèi)核并不是通過減少內(nèi)核的服務(wù)功能模塊而變小的,而是把內(nèi)核中應(yīng)提供的部分服務(wù)功能模塊移動到內(nèi)核外來實現(xiàn)的。這一點看起來有些費解,其實也很簡單。還是拿到飯店吃飯為例,如果你按菜單點的某道菜肴,等了一會兒,你可能是吃到了這道菜,你作為一個顧客享受了這道菜肴,但是這道菜真的是這個飯店做的嗎?不一定,有可能就是其他飯店做的菜,只不過這個飯店在接收你的要求之后,它把消息發(fā)到另外一家飯店并讓他們把菜做出來,再拿到你的餐桌上罷了。如果一個飯店的大部分菜肴都可以這樣來提供,那么這個飯店所占用的土地面積一定會小得多。

其實,微內(nèi)核的設(shè)計思想與上面所舉的例子一樣。如果把內(nèi)核的某些服務(wù)模塊作為一個進程放在內(nèi)核以外,那么當(dāng)要求服務(wù)的進程有服務(wù)要求時,這個仍然是通過系統(tǒng)調(diào)用接口向內(nèi)核提出服務(wù)申請,而系統(tǒng)調(diào)用接口接收到該申請后,則立即通過向內(nèi)核外的服務(wù)進程發(fā)送一個消息來啟動這個服務(wù)進程,從而為要求服務(wù)的進程提供了相應(yīng)的服務(wù)。顯然,這樣一來,就會使要求服務(wù)的進程和提供服務(wù)的進程都處在操作系統(tǒng)的用戶區(qū)而處在同一個層次上了,所以內(nèi)核也就變小了。為了區(qū)別兩種不同的進程,把要求服務(wù)的進程叫做“客戶”,把提供服務(wù)的進程叫做“服務(wù)器”,這種微內(nèi)核結(jié)構(gòu)也叫做“客戶/服務(wù)器”結(jié)構(gòu)。微內(nèi)核的“客戶/服務(wù)器”結(jié)構(gòu)示意圖如圖所示。

搜狗截圖120906_18.jpg

圖 微內(nèi)核的客戶/服務(wù)器結(jié)構(gòu)示意圖

在微內(nèi)核中,由于客戶/服務(wù)器的這種結(jié)構(gòu)使內(nèi)核變得更便于維護,一旦某部分發(fā)生錯誤,不會影響其他部分的工作,并且很適合嵌人式系統(tǒng)可裁剪性的要求:如果系統(tǒng)不需要某種服務(wù),則只要簡單地把相應(yīng)的服務(wù)器刪掉即可。當(dāng)然,系統(tǒng)設(shè)計人員也可根據(jù)實際需要對某一服務(wù)器進程進行修改,雨不會影響其他部分,再由于內(nèi)核是通過消息與服務(wù)器聯(lián)系的,是動態(tài)鏈接的,因此在修改某個服務(wù)器進程后,只要對修改的服務(wù)器進行編譯即可,而沒有必要對整個操作系統(tǒng)進行編譯。

此外,這種結(jié)構(gòu)也適用于分布式系統(tǒng)。當(dāng)客戶需要遠程服務(wù)器服務(wù)時,只要在系統(tǒng)調(diào)用的庫函數(shù)中把客戶進程的請求裝配成數(shù)據(jù)包轉(zhuǎn)發(fā)給遠程的服務(wù)器,再接收遠程服務(wù)器所返回的結(jié)果,把結(jié)果再返回給客戶進程。對客戶進程來說,它像正常一樣使用系統(tǒng)調(diào)用,而不知道也沒有必要知道這個服務(wù)是來自本地還是來自遠程主機。

盡管可把原屬于內(nèi)核的服務(wù)模塊移動到內(nèi)核以外,但有幾項基本服務(wù)是沒有辦法這樣做的。例如,描述進程的進程控制塊一定應(yīng)該是內(nèi)核的內(nèi)容,于是與進程控制塊相關(guān)的進程調(diào)度、進程創(chuàng)建、進程刪除等需要訪問進程控制塊的服務(wù)必須要保留在內(nèi)核中;進程通信的管理當(dāng)然也要保留在內(nèi)核中;中斷的管理也要保留在內(nèi)核中??傊?,凡是需要使用處理器特權(quán)指令的功能模塊都要保留在內(nèi)核中。



關(guān)鍵詞: 結(jié)構(gòu) 內(nèi)核

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉