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