Linux操作系統(tǒng)的嵌入式領(lǐng)域面臨新挑戰(zhàn)
與在服務(wù)器和桌面系統(tǒng)的風(fēng)風(fēng)火火比較起來,Linux在嵌入式領(lǐng)域似乎總是不溫不火,是生不逢時,還是另有隱情?
最近幾年,Linux操作系統(tǒng)在桌面和服務(wù)器系統(tǒng)等領(lǐng)域的應(yīng)用取得了很大的成功。它的存在已經(jīng)對這些領(lǐng)域中的傳統(tǒng)霸主,例如微軟的Windows和Sun公司的SunOS/Solaris操作系統(tǒng)等造成了極大的威脅。這主要得益于其較低的使用開銷和更高的應(yīng)用性能:現(xiàn)在,Linux操作系統(tǒng)加高端奔騰處理器構(gòu)成的計算機系統(tǒng)在性能上已經(jīng)遠遠超過了同等價位的運行著Solaris的基于SPARC處理器的計算機系統(tǒng);Linux能夠取得成功的另一個主要原因在于它是一個開放源碼的系統(tǒng)軟件,Linux用戶可以享受到世界各地Linux愛好者提供的支持。
就在Linux系統(tǒng)在桌面和服務(wù)器領(lǐng)域應(yīng)用風(fēng)頭正勁的時候,業(yè)界內(nèi)外普遍地認為Linux也會成功打入到嵌入式系統(tǒng)中,成為主流操作系統(tǒng)之一。但是,事與愿違,現(xiàn)實中的情形遠沒有那么樂觀。那些為桌面和服務(wù)器系統(tǒng)提供Linux操作系統(tǒng)軟件的開發(fā)商們并不熱衷于將Linux引入到嵌入式系統(tǒng)領(lǐng)域。而其他的一些已經(jīng)在嵌入式Linux領(lǐng)域開拓市場的公司,比如Lineo和MontaVista,也一直沒有獲得穩(wěn)定的收益。為什么Linux沒有能夠在嵌入式領(lǐng)域中獲得它在桌面系統(tǒng)中同樣的輝煌呢?原因就是桌面系統(tǒng)和嵌入式系統(tǒng)對操作系統(tǒng)的需求有所差異。
桌面系統(tǒng)和嵌入式系統(tǒng)對操作系統(tǒng)的需求有很多差異,而且都很關(guān)鍵。我們在這里先討論幾個最重要的問題,這些問題已經(jīng)足夠體現(xiàn)出Linux系統(tǒng)在嵌入式系統(tǒng)領(lǐng)域所面臨的挑戰(zhàn)。這些挑戰(zhàn)都是在之前的桌面系統(tǒng)應(yīng)用中未曾遇到的,主要包括:
●中斷延遲(interruptlatency)
●線程響應(yīng)時間(threadresponsetime)
●調(diào)度策略(scheduling)
●設(shè)備驅(qū)動程序
●可靠性和安全性
以上這些都是技術(shù)層面上的挑戰(zhàn)。而在將Linux系統(tǒng)引入嵌入式領(lǐng)域時,還有很多的非技術(shù)性層面上的挑戰(zhàn)也是必須要考慮的。
技術(shù)挑戰(zhàn)
中斷延遲
實時系統(tǒng)(Real-TimeSystem)是指能夠在限定的時間(一般是很短的時間范圍)內(nèi)對系統(tǒng)中發(fā)生的某類事件(比如從某個外圍設(shè)備傳來的中斷請求)進行處理的系統(tǒng)。如果系統(tǒng)對這些事件的響應(yīng)出現(xiàn)了問題,比如未能在限定時間內(nèi)對其做出相應(yīng)處理,就會導(dǎo)致系統(tǒng)出現(xiàn)故障。絕大多數(shù)嵌入式系統(tǒng)都有很高的實時性需求,而桌面系統(tǒng)卻不一定。在嵌入式系統(tǒng)測試中,衡量系統(tǒng)實時性的最主要參數(shù)有兩個:一個是中斷延遲時間的長短,另一個是線程上下文切換時間的長短。
中斷延遲是指從產(chǎn)生中斷請求到相應(yīng)中斷服務(wù)程序的第一條指令被執(zhí)行之間的這段時間。由于中斷具備有優(yōu)先級而且可以嵌套產(chǎn)生,因此可以測知優(yōu)先級最高的中斷在執(zhí)行時的延遲時間。測試表明,產(chǎn)生中斷延遲的原因除了處理器響應(yīng)時間外,更重要的是操作系統(tǒng)往往會大大增加中斷被延遲的時間。在操作系統(tǒng)運行過程中,存在著一些關(guān)鍵的操作。這些操作在執(zhí)行時,操作系統(tǒng)會禁止在其間插入任何中斷。因此如果一個中斷請求在操作系統(tǒng)禁止中斷的這段時間里產(chǎn)生,那么對它的處理就會始終保持在掛起狀態(tài),直到操作系統(tǒng)重新允許中斷插入。最終,中斷延遲在最壞情況下的數(shù)值是和操作系統(tǒng)關(guān)鍵操作中的指令序列在中斷請求產(chǎn)生后繼續(xù)執(zhí)行的時間緊密相關(guān)。
實時系統(tǒng)就是要確保系統(tǒng)中的關(guān)鍵事件能夠在限定的時間段內(nèi)被處理。操作系統(tǒng)開發(fā)商會提供給用戶一個表示中斷延遲的數(shù)值以體現(xiàn)產(chǎn)品的實時性能。這個數(shù)值是在實驗室環(huán)境下測得的,它可能是平均值,典型值,或者是在最好情況下的系統(tǒng)中斷延遲。但在實際應(yīng)用過程中,最壞情況下的延遲中斷才是用戶最需要考慮的。那么如何才能得到這個數(shù)值呢?瑞典的一個研究小組對操作系統(tǒng)中禁止中斷產(chǎn)生的代碼區(qū)域進行分析,試圖用這種方法對當前一款商業(yè)化的實時操作系統(tǒng)進行研究并得到系統(tǒng)中最壞情況下的中斷延遲的大小。
這項研究使用了先進的程序流分析方法來確定操作系統(tǒng)中所有的關(guān)鍵操作(即那些“禁止插入中斷”的代碼)區(qū)域的位置和結(jié)構(gòu)。研究人員還利用了周期精確的模型來測定選定代碼區(qū)域的被執(zhí)行次數(shù)。但是研究結(jié)果并不讓人感到振奮。因為用于禁止和允許中斷的指令所需的源操作數(shù)在執(zhí)行時才能確定,所以研究人員不能用靜態(tài)分析的方法得到關(guān)鍵操作的執(zhí)行情況。還有一些其他的程序流問題,比如關(guān)鍵操作序列的嵌套出現(xiàn)等等,也阻礙了研究的進展。最終據(jù)研究人員估測,大概只有一半數(shù)目的“禁止插入中斷”的關(guān)鍵操作區(qū)域能夠被確定,而另一半大約有600個區(qū)域會對中斷響應(yīng)時間產(chǎn)生未知的影響。
研究人員評估了他們能夠確定的那些關(guān)鍵操作區(qū)域的執(zhí)行時間。這些區(qū)域的執(zhí)行情況非常復(fù)雜,有很多已經(jīng)不是以簡單的順序結(jié)構(gòu)執(zhí)行了,少數(shù)幾個區(qū)域甚至包含了三個嵌套的循環(huán),而且還有一些關(guān)鍵操作區(qū)域的循環(huán)次數(shù)是不定的。在研究人員提供的報告中,可以看到一個具有嵌套循環(huán)的關(guān)鍵操作區(qū)域的執(zhí)行周期數(shù)的估測為26729。試想在一個主頻為100MHz的微處理器上,僅僅是這樣一個區(qū)域就要消耗大約250微秒的時間。相信沒有任何一個實時操作系統(tǒng)的開發(fā)商會愿意公開這個量級上的中斷延遲。