|
嵌入式培訓(xùn)就業(yè)情況_微內(nèi)核操作系統(tǒng)在嵌入式平臺(tái)上的應(yīng)用,
所謂嵌入式系統(tǒng)是指為特定應(yīng)用而設(shè)計(jì)的專用電腦系統(tǒng),通常執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù)。說(shuō)到嵌入式系統(tǒng)上的操作系統(tǒng),人們首先想到的是各種經(jīng)過(guò)裁剪的Linux以及WinCE。但是Linux和WinCE本身作為單內(nèi)核(monolithickernel)操作系統(tǒng),內(nèi)核部分過(guò)于復(fù)雜,并不適用于嵌入式平臺(tái)。而μC/Os-II和eCos等又過(guò)于簡(jiǎn)單,不能提供完整的功能。而隨著微內(nèi)核(microkernel)操作系統(tǒng)的理論和實(shí)現(xiàn)越來(lái)越成熟,微內(nèi)核操作系統(tǒng)開始成為嵌入式平臺(tái)一個(gè)很好的選擇。
圖1 嵌入式平臺(tái)操作系統(tǒng)占有率比較圖
嵌入式平臺(tái)對(duì)操作系統(tǒng)的需求
嵌入式平臺(tái)上運(yùn)行的操作系統(tǒng)一方面會(huì)根據(jù)嵌入式平臺(tái)所執(zhí)行的功能對(duì)內(nèi)核組件進(jìn)行裁剪,在滿足系統(tǒng)的應(yīng)用功能的基礎(chǔ)上去除不必要的部分;另一方面,嵌入式平臺(tái)對(duì)操作系統(tǒng)的可靠性,實(shí)時(shí)性和安全性特性有很高的要求。
可靠性是指嵌入式設(shè)備特別是工業(yè)設(shè)備中的嵌入式系統(tǒng)經(jīng)常需要連續(xù)運(yùn)行數(shù)以年計(jì)的時(shí)間而不出差錯(cuò)?梢韵胂袢绻w機(jī)中的嵌入式系統(tǒng)在飛機(jī)飛行時(shí)崩潰重啟,會(huì)造成多么大的危害。這就要求嵌入式系統(tǒng)上的操作系統(tǒng)的運(yùn)行完全沒(méi)有錯(cuò)誤,或者在錯(cuò)誤出現(xiàn)的時(shí)候可以快速自動(dòng)復(fù)位,并且避免在操作系統(tǒng)中使用不穩(wěn)定的模塊。
實(shí)時(shí)性是指系統(tǒng)能在確定的時(shí)間內(nèi)執(zhí)行操作并對(duì)外部的異步事件做出響應(yīng),比如汽車發(fā)生車禍時(shí)安全氣囊必須在極短的時(shí)間內(nèi)打開。一次正確的操作不僅要求邏輯功能上的正確,而且要求完成這些操作所花費(fèi)的時(shí)間在限定之內(nèi)。實(shí)時(shí)又分成硬實(shí)時(shí)和軟實(shí)時(shí),硬實(shí)時(shí)要求任務(wù)在規(guī)定時(shí)間內(nèi)必須完成,這由操作系統(tǒng)來(lái)保證;而軟實(shí)時(shí)要求事件響應(yīng)是實(shí)時(shí)的,并按照任務(wù)的優(yōu)先級(jí),盡可能在短時(shí)間內(nèi)完成任務(wù)。實(shí)時(shí)操作系統(tǒng)需要調(diào)度一切可利用的資源完成有實(shí)時(shí)性要求的任務(wù),其次才著考慮提高操作系統(tǒng)的整體效率。
隨著嵌入式系統(tǒng)越來(lái)越多得與外部連接,甚至是通過(guò)互聯(lián)網(wǎng)連接,其安全性也越來(lái)越受到關(guān)注。比如用掌上電腦進(jìn)行網(wǎng)上購(gòu)物的時(shí)候,用戶的銀行帳號(hào)信息必須得到嚴(yán)格的保護(hù)。安全性具體是指要求嵌入式設(shè)備在與外部連接的過(guò)程中,其內(nèi)部的數(shù)據(jù)不會(huì)偶然或被惡意地破壞、更改或者泄露,維持嵌入式系統(tǒng)中信息的保密性和完整性。
微內(nèi)核操作系統(tǒng)
所謂微內(nèi)核是一種最小的的計(jì)算機(jī)操作系統(tǒng)內(nèi)核,其設(shè)計(jì)思想是內(nèi)核本身不提供操作系統(tǒng)的相關(guān)服務(wù),而是提供實(shí)現(xiàn)這些服務(wù)的機(jī)制,諸如底層的地址空間管理,線程調(diào)度以及進(jìn)程間通信。一般的硬件都有執(zhí)行權(quán)限級(jí)別,比如IntelIA32架構(gòu)有Ring0到Ring3的特權(quán)級(jí),而一般的操作系統(tǒng)至少會(huì)用到兩個(gè),稱之為內(nèi)核態(tài)和用戶態(tài)。而對(duì)于微內(nèi)核操作系統(tǒng)來(lái)說(shuō),并非操作系統(tǒng)服務(wù)都運(yùn)行于內(nèi)核態(tài),而是提供服務(wù)實(shí)現(xiàn)的機(jī)制部分運(yùn)行于內(nèi)核態(tài);而操作系統(tǒng)的服務(wù),包括設(shè)備驅(qū)動(dòng),文件系統(tǒng)和用戶界面等則作為用戶態(tài)的服務(wù)應(yīng)用程序運(yùn)行。
圖2 單內(nèi)核操作系統(tǒng)(左)和微內(nèi)核操作系統(tǒng)結(jié)構(gòu)比較圖嵌入式系統(tǒng)要加班嗎, 常用的嵌入式os, 嵌入式實(shí)訓(xùn)的目的, 嵌入式電路怎么設(shè)計(jì), 嵌入式原理的書, 復(fù)旦大學(xué)嵌入式系統(tǒng), 嵌入式應(yīng)用程序燒寫, 嵌入式的英文簡(jiǎn)稱, 2u嵌入式錄音系統(tǒng), 嵌入式AHB全稱, 嵌入式方面問(wèn)題, 西鐵城嵌入式怎么開, 無(wú)法識(shí)別嵌入式字體, 雅特生嵌入式電源, 嵌入式動(dòng)詞嗎, 華工嵌入式操作系統(tǒng), 可控硅嵌入式控制器, 嵌入式掃描模組構(gòu)造, 嵌入式工作輕松么, 嵌入式米箱壞處, 嵌入式qt作品, 嵌入式型芯ug,
如圖2所示,左邊的是單內(nèi)核操作系統(tǒng)的結(jié)構(gòu)示意圖。我們常用的Windows操作系統(tǒng)和Linux操作系統(tǒng)都屬于這個(gè)類型。單內(nèi)核操作系統(tǒng)的內(nèi)核提供完整的操作系統(tǒng)服務(wù),比如圖中所示的文件系統(tǒng),進(jìn)程間通信,進(jìn)程調(diào)度器,內(nèi)存管理,設(shè)備驅(qū)動(dòng)程序等等。而應(yīng)用程序則運(yùn)行在用戶態(tài),應(yīng)用程序想要使用操作系統(tǒng)提供的服務(wù),需要通過(guò)內(nèi)核提供的接口,我們稱之為系統(tǒng)調(diào)用。當(dāng)應(yīng)用程序進(jìn)程執(zhí)行系統(tǒng)調(diào)用時(shí),會(huì)陷入到內(nèi)核的代碼去執(zhí)行,進(jìn)程此時(shí)運(yùn)行于內(nèi)核態(tài),處理器處于特權(quán)級(jí)最高的Ring0狀態(tài)執(zhí)行。當(dāng)應(yīng)用程序需要的操作系統(tǒng)服務(wù)調(diào)用完成,進(jìn)程回到原本的應(yīng)用程序代碼中繼續(xù)執(zhí)行,也同時(shí)回到了用戶態(tài),在Ring3的特權(quán)級(jí)上運(yùn)行。
而對(duì)于右邊的微內(nèi)核操作系統(tǒng),操作系統(tǒng)的內(nèi)核部分被大大簡(jiǎn)化,只包括基本的IPC機(jī)制,虛擬內(nèi)存映射和調(diào)度機(jī)制,這些僅僅是用于實(shí)現(xiàn)操作系統(tǒng)服務(wù)的基本機(jī)制。真正的操作系統(tǒng)服務(wù),比如設(shè)備驅(qū)動(dòng),文件系統(tǒng),應(yīng)用程序間通信等,通過(guò)用戶態(tài)服務(wù)程序的方式實(shí)現(xiàn)。當(dāng)普通的應(yīng)用程序需要操作系統(tǒng)的相關(guān)服務(wù)時(shí),通過(guò)發(fā)送IPC消息給這個(gè)服務(wù)程序,這些服務(wù)程序進(jìn)行相關(guān)的操作,必要時(shí)也會(huì)通過(guò)內(nèi)核提供的系統(tǒng)調(diào)用陷入到內(nèi)核態(tài)去執(zhí)行基本的操作,并把結(jié)果再通過(guò)IPC返回給請(qǐng)求服務(wù)的應(yīng)用程序。
微內(nèi)核操作系統(tǒng)特點(diǎn)
微內(nèi)核操作系統(tǒng)特有的架構(gòu)帶來(lái)的很多優(yōu)點(diǎn),這些特點(diǎn)正好匹配了嵌入式平臺(tái)對(duì)操作系統(tǒng)的需求,非常適合于嵌入式環(huán)境的應(yīng)用。
首先是可靠性,按照單內(nèi)核操作系統(tǒng)的設(shè)計(jì),內(nèi)核包括所有的操作系統(tǒng)服務(wù),其中任何一個(gè)服務(wù)出錯(cuò),就會(huì)造成整個(gè)系統(tǒng)的崩潰。微內(nèi)核操作系統(tǒng)的設(shè)計(jì)思想是在內(nèi)核中留盡量少的東西,只保留實(shí)現(xiàn)操作系統(tǒng)服務(wù)的最基本機(jī)制,而把具體服務(wù)的實(shí)現(xiàn)放到用戶態(tài)的服務(wù)應(yīng)用程序中去。這就大大降低了內(nèi)核崩潰的幾率。特別是目前操作系統(tǒng)的許多錯(cuò)誤都是因?yàn)椴灰?guī)范,并且沒(méi)有經(jīng)過(guò)嚴(yán)格測(cè)試的驅(qū)動(dòng)程序造成的。圖3顯示了Linux內(nèi)核代碼不同目錄的錯(cuò)誤分布,顯然驅(qū)動(dòng)程序的錯(cuò)誤是主要原因。
圖3 操作系統(tǒng)中的錯(cuò)誤在各模塊中的分布
然后是實(shí)時(shí)性。實(shí)時(shí)性是指操作系統(tǒng)對(duì)響應(yīng)時(shí)間有嚴(yán)格的要求,不僅要求成功執(zhí)行還要求在規(guī)定的時(shí)間內(nèi)完成所有操作。一般會(huì)要求操作系統(tǒng)內(nèi)核是搶占式的,并且內(nèi)核的代碼是可重入的。微內(nèi)核操作系統(tǒng)內(nèi)核較小也意味著需要實(shí)時(shí)化的部分較少。而且微內(nèi)核之上也可以很方便同時(shí)運(yùn)行實(shí)時(shí)的程序和一般的非實(shí)時(shí)的程序。
此外還不能忘了安全性。設(shè)計(jì)安全系統(tǒng)的準(zhǔn)則是最小權(quán)限準(zhǔn)則,也即所有的部件都只擁有執(zhí)行相關(guān)功能所必須的權(quán)限,而沒(méi)有額外的權(quán)限。最小權(quán)限準(zhǔn)則需要系統(tǒng)的可信計(jì)算基礎(chǔ)盡可能地小?尚庞(jì)算基礎(chǔ)(TrustedComputingBase)是指整個(gè)系統(tǒng)中對(duì)安全性最關(guān)鍵的部分,在可信計(jì)算基礎(chǔ)內(nèi)的漏洞會(huì)危及整個(gè)系統(tǒng)的安全性。因?yàn)椴僮飨到y(tǒng)內(nèi)核是可信計(jì)算基礎(chǔ)中最重要的一部分,微內(nèi)核操作系統(tǒng)內(nèi)核較小的特點(diǎn)使之在安全性應(yīng)用方面很有優(yōu)勢(shì)。[!--empirenews.page--]
上面說(shuō)了很多微內(nèi)核操作系統(tǒng)的優(yōu)點(diǎn),但微內(nèi)核架構(gòu)也不是完美的,它有一個(gè)很大的缺點(diǎn)那就是性能。我們知道對(duì)于單內(nèi)核操作系統(tǒng),調(diào)用系統(tǒng)服務(wù)的方式是用過(guò)系統(tǒng)調(diào)用,需要的僅僅是用戶態(tài)和內(nèi)核態(tài)的兩次轉(zhuǎn)換,每個(gè)進(jìn)程都同時(shí)有用戶棧和內(nèi)核?梢源娣艌(zhí)行過(guò)程中的信息。而對(duì)于微內(nèi)核操作系統(tǒng),調(diào)用系統(tǒng)服務(wù)需要通過(guò)發(fā)送IPC消息給服務(wù)應(yīng)用程序,服務(wù)應(yīng)用程序通過(guò)系統(tǒng)調(diào)用完成服務(wù)請(qǐng)求后再通過(guò)另一個(gè)IPC消息把結(jié)果返回給調(diào)用者。這涉及到了進(jìn)程的上下文切換,并且由于沒(méi)有內(nèi)核棧這樣簡(jiǎn)單的機(jī)制,傳送消息需要額外的拷貝開銷。因此性能對(duì)于微內(nèi)核架構(gòu)操作系統(tǒng)成了一個(gè)很大的問(wèn)題。事實(shí)上第一代微內(nèi)核操作系統(tǒng)諸如 Mach之上運(yùn)行的系統(tǒng)的性能讓人難以接受。然而以L4為首的第二代微內(nèi)核操作系統(tǒng)通過(guò)合理的架構(gòu)設(shè)計(jì),將IPC的開銷相對(duì)Mach成數(shù)量級(jí)級(jí)別得減少。有分析表明在L4微內(nèi)核操作系統(tǒng)之上運(yùn)行的L4Linux的性能相對(duì)原本的Linux只有幾個(gè)百分點(diǎn)的損失。[5]
結(jié)語(yǔ)
綜上文所述,微內(nèi)核操作系統(tǒng)的可靠性、實(shí)時(shí)性和安全性特點(diǎn)很好得匹配了嵌入式平臺(tái)對(duì)操作系統(tǒng)的需求。隨著對(duì)微內(nèi)核操作系統(tǒng)研究的深入,其相應(yīng)技術(shù)將會(huì)不斷地成熟,性能也會(huì)不斷地提高,可以預(yù)見不久的將來(lái),我們將會(huì)見到越來(lái)越多的微內(nèi)核操作系統(tǒng)被應(yīng)用到嵌入式平臺(tái)上。 |
|