嵌入式Linux在移動(dòng)設(shè)備中的應(yīng)用



張 盛 曾 鵬


南京郵電學(xué)院 南京210003



  摘 要

  隨著Linux操作系統(tǒng)本身的不斷完善,嵌入式Linux已經(jīng)廣泛應(yīng)用到手機(jī)、PDA以及其他移動(dòng)終端產(chǎn)品中。嵌入式Linux以其開放的源碼,良好的適應(yīng)性,較低的成本和很好的技術(shù)移植在手機(jī)等移動(dòng)終端產(chǎn)品的操作系統(tǒng)領(lǐng)域,獲得了越來(lái)越多的青睞。本文通過(guò)對(duì)嵌入式Linux在移動(dòng)終端產(chǎn)品中的優(yōu)勢(shì)分析,尤其對(duì)實(shí)時(shí)性的分析比較,介紹了其在手持移動(dòng)終端產(chǎn)品方面廣闊的應(yīng)用前景和實(shí)際應(yīng)用情況。


  關(guān)鍵詞 Linux 嵌入式Linux 實(shí)時(shí)性 嵌入式 Monta Vista


  1 前 言


  1. 1 Linux操作系統(tǒng)的引入


  早在2001年,手機(jī)生產(chǎn)商們便開始尋求一種基于“開放”的操作系統(tǒng)的手機(jī),所謂“開放”指其所有的API(應(yīng)用程序接口)應(yīng)該是公開并且受到廣泛支持。當(dāng)時(shí)所面臨的選擇有Symbian的EPOC平臺(tái),Palm/OS以及微軟的WIN CE。隨著研究的深入,Linux的嵌入式版本開始受到青睞并擴(kuò)展其市場(chǎng)。從2001年至2002年,嵌入式Linux在嵌入式操作系統(tǒng)的市場(chǎng)份額迅速增長(zhǎng)了一倍左右,從而成為嵌入式OS中的重要一員。


  1. 2 Linux操作系統(tǒng)在移動(dòng)設(shè)備領(lǐng)域的優(yōu)勢(shì)


  首先,Linux屬于開放的操作系統(tǒng),它自身的技術(shù)文檔甚至源代碼都是開放的,因而在學(xué)術(shù)領(lǐng)域受到格外青睞,使得它對(duì)新技術(shù),新協(xié)議有良好的適應(yīng)性.


  其次,由于Linux和Unix之間的相似性,使得許多對(duì)Unix熟悉的開發(fā)人員能夠很快在相似的基于嵌入式Linux開發(fā)環(huán)境中進(jìn)行開發(fā)工作。另外, 由于Linux源碼的開放性使得代碼移植和重用變得相當(dāng)普遍,基于嵌入式Linux平臺(tái)的開發(fā)產(chǎn)品往往只花費(fèi)較低的成本就能有很好的質(zhì)量。這對(duì)于注重開發(fā)成本的公司無(wú)疑具有極大的誘惑力。


  此外,Linux提供了良好的安全性能和并行處理能力。Java語(yǔ)言在移動(dòng)領(lǐng)域正逐漸成為主流的開發(fā)語(yǔ)言,而實(shí)驗(yàn)表明,在相同的硬件平臺(tái)上,Java虛擬機(jī)在Linux上能取得比Windows CE上更好的性能值。因此Java+Linux成為現(xiàn)在的時(shí)尚搭配。當(dāng)然,Linux在價(jià)格上的優(yōu)勢(shì)也很關(guān)鍵。盡管Linux并非全免費(fèi),但和其他商用操作系統(tǒng)相比,它還是占盡價(jià)格優(yōu)勢(shì)。


  1. 3 Linux操作系統(tǒng)占用空間情況


  在占用空間方面,Linux大約占用1M ROM和2M RAM。這和Windows CE的空間占用幾乎差不多,而Linux的優(yōu)勢(shì)在于通過(guò)壓縮文件系統(tǒng)能在RAM 和ROM之間作出相對(duì)合理的平衡。


  2 嵌入式Linux目前的商用版本


  目前國(guó)際嵌入式Linux市場(chǎng)的商用版本有:


  其中某些商用版本已被一些手持移動(dòng)設(shè)備生產(chǎn)公司所使用,例如Sharp公司的ZaurusPDA采用就采用了Lineo的Embedix,該Linux版本采用“Qtopia”的GUI;而新近MOTOROLA公司推出的A760采用了MontaVista公司的Linux CEE3.0。


  目前國(guó)內(nèi)的Linux嵌入式操作系統(tǒng)廠商隊(duì)伍也正在逐漸擴(kuò)大,已形成百家爭(zhēng)鳴的局面,在市場(chǎng)上主要有紅旗嵌入式Linux、博利思推出的Pocket IX、藍(lán)點(diǎn)的嵌入式Linux系統(tǒng)、網(wǎng)虎科技推出的Coventive和共創(chuàng)軟件聯(lián)盟推出的CC-Linux。這些版本大都對(duì)通用的Linux進(jìn)行了合理的裁剪,實(shí)現(xiàn)了ROM/RAM/Flash的文件系統(tǒng)、軟實(shí)時(shí)、能量低中斷、電源管理、Java虛擬機(jī)、多平臺(tái)和多線程支持。


  3 關(guān)于嵌入式Linux實(shí)時(shí)性問題的思考


  本文將重點(diǎn)討論在嵌入式Linux系統(tǒng)中如何實(shí)現(xiàn)實(shí)時(shí)性的問題:


  3.1 問題的提出


  眾所周知,在多進(jìn)程的操作系統(tǒng)中,進(jìn)程調(diào)度是一個(gè)全局性的、關(guān)鍵性的問題,它決定著系統(tǒng)的總體設(shè)計(jì)、實(shí)現(xiàn)、功能設(shè)置以及各個(gè)方面的性能。而根據(jù)不同的調(diào)度算法進(jìn)行的進(jìn)程切換的速度,也是衡量一個(gè)操作系統(tǒng)性能好壞的重要指標(biāo)。一個(gè)好的系統(tǒng)的進(jìn)程調(diào)度機(jī)制,往往兼顧三種不同的需要:


 。1)交互式應(yīng)用:著重于系統(tǒng)的響應(yīng)速度,使共用一個(gè)系統(tǒng)的各個(gè)用戶都能感覺到自己是在獨(dú)占地使用一個(gè)系統(tǒng)。


 。2)批處理應(yīng)用:對(duì)響應(yīng)速度并無(wú)要求,但是完成一個(gè)作業(yè)所需的時(shí)間仍是一個(gè)重要的因素,考慮“平均速度”。


 。3)實(shí)時(shí)應(yīng)用:時(shí)間性最強(qiáng)的應(yīng)用,不但要考慮進(jìn)程執(zhí)行的平均速度,還要考慮“即時(shí)速度”;不但要考慮響應(yīng)速度,還要考慮有關(guān)程序能否在規(guī)定時(shí)間內(nèi)執(zhí)行完。移動(dòng)設(shè)備例如手機(jī)、PDA等,對(duì)實(shí)時(shí)性要求特別高。


  標(biāo)準(zhǔn)的Linux內(nèi)核繼承了Unix的時(shí)間共享機(jī)制,并不太適合實(shí)時(shí)性要求。內(nèi)核不是采用搶占方式而是采用基于公平原則的時(shí)間片來(lái)進(jìn)行進(jìn)程調(diào)度。所以其中就存在矛盾,因?yàn)槿绻{(diào)度的機(jī)制為:把時(shí)間分成時(shí)間片,每個(gè)時(shí)間片來(lái)一次時(shí)鐘中斷,而調(diào)度可以在時(shí)間片中斷時(shí)進(jìn)行。調(diào)度原則為根據(jù)進(jìn)程的優(yōu)先級(jí)別安排何進(jìn)程先運(yùn)行,每個(gè)時(shí)間片一次,除此之外就只能在進(jìn)程資源滿足時(shí)才可進(jìn)行調(diào)度。這樣,只要時(shí)間片分得得當(dāng),交互式應(yīng)用就能滿足,但是這樣的機(jī)制并不適合實(shí)時(shí)的應(yīng)用。因?yàn)榭赡茉谀骋粫r(shí)刻有優(yōu)先級(jí)別高的進(jìn)程急著要運(yùn)行,而恰有進(jìn)程正在運(yùn)行中,那優(yōu)先級(jí)別高的進(jìn)程只能干等著。當(dāng)然,這也取決于CPU的速度,如果CPU有能力把時(shí)間片分小到0.5毫秒,而CPU仍然能在這么短的時(shí)間里做足夠多的事,那么對(duì)一般的實(shí)時(shí)應(yīng)用可以滿足要求。但是,對(duì)于手機(jī)這種屬于CLDC(Connected Limited Device Configuration)的設(shè)備,CPU不快,存儲(chǔ)容量受限,該問題就凸顯不便。


  3.2 問題的解決方案


  目前在移動(dòng)設(shè)備上使用的嵌入式Linux系統(tǒng)中,為了滿足實(shí)時(shí)性的要求,一般采用兩種方法:利用處理器的能力開發(fā)的快速應(yīng)用程序; 插入第二層內(nèi)核,模擬CPU的中斷處理,管理實(shí)時(shí)事件和處理,而讓本來(lái)的Linux內(nèi)核運(yùn)行在一個(gè)比第二層內(nèi)核較低優(yōu)先級(jí)上。但是該種方法對(duì)Linux的通用性產(chǎn)生了影響,因?yàn)樵摲椒óa(chǎn)生了不同的API和非標(biāo)準(zhǔn)的編程模型,并且有可能剝奪原來(lái)的Linux的正常運(yùn)行權(quán)。所以當(dāng)前的所謂實(shí)時(shí)Linux操作系統(tǒng)并非真正意義的Linux。


  那么能否從Linux本身找到解決辦法呢?Linux本身的源碼中就有解決方案。


  Linux和Unix一樣,以進(jìn)程優(yōu)先級(jí)為基礎(chǔ)進(jìn)行調(diào)度。內(nèi)核為每個(gè)進(jìn)程計(jì)算出一個(gè)反映其運(yùn)行資格的權(quán)值,即我們所提到的優(yōu)先級(jí)。然后挑選權(quán)值最高的進(jìn)程投入運(yùn)行。在運(yùn)行過(guò)程中,當(dāng)前進(jìn)程的權(quán)值隨時(shí)間而遞減,從而在下一次調(diào)度的時(shí)候原來(lái)權(quán)值較低的進(jìn)程可能就更有資格運(yùn)行了。當(dāng)所有進(jìn)程的權(quán)值都變成0,就重新計(jì)算一下所有進(jìn)程的權(quán)值。


  Linux內(nèi)核為了適合不同應(yīng)用的需要,實(shí)現(xiàn)了三種不同的政策:SCHED_FIFO、SCHED_RR以及SCHED_OTHER。每個(gè)進(jìn)程都有自己的適用的調(diào)度政策,并且進(jìn)程還可以通過(guò)系統(tǒng)調(diào)用sched_setscheduler()設(shè)定自己適用的調(diào)度政策。其中,SCHED_FIFO就適用于時(shí)間性要求比較高但每次運(yùn)行所需時(shí)間比較短的進(jìn)程,即實(shí)時(shí)性要求比較高的情況。調(diào)度政策為SCHED_FIFO的進(jìn)程一旦受到調(diào)度進(jìn)入運(yùn)行,就一直運(yùn)行到自愿讓出或者被優(yōu)先級(jí)更高的進(jìn)程剝奪為止。Linux針對(duì)實(shí)時(shí)進(jìn)程,特別定義了實(shí)時(shí)優(yōu)先級(jí)rt_priority,其權(quán)值為(1000 +p->rt_priority),也就是說(shuō)實(shí)時(shí)進(jìn)程的權(quán)值至少是1000,所以當(dāng)有實(shí)時(shí)進(jìn)程就緒時(shí)候非實(shí)時(shí)進(jìn)程是沒有機(jī)會(huì)運(yùn)行的。這種機(jī)制說(shuō)明Linux有能力不通過(guò)插入第二層內(nèi)核就能很好地支持實(shí)時(shí)性。


  這就提供了第三種潛在的解決方案來(lái)實(shí)現(xiàn)實(shí)時(shí)嵌入式Linux:使用Linux自身所具備的實(shí)時(shí)能力,即利用支持SMP的標(biāo)準(zhǔn)內(nèi)核本身的強(qiáng)占性能力。這樣,不僅可以使用本地的Linux代碼、API和程序模型,并可以完全發(fā)揮Linux在其他方面的處理能力。而事實(shí)上,Linux 2.4和2.5版本已經(jīng)提出了該解決方案。今年Linux 2.6版本推出,對(duì)實(shí)時(shí)性的有了更好地支持。這將更加推動(dòng)嵌入式Linux在實(shí)時(shí)計(jì)算方面的應(yīng)用。


  3. 3 Linux 2.6解決方案


  在Linux 2.6推出不久,LinuxWorks立刻宣布推出基于Linux 2.6版本的嵌入式Linux版本: BlueCat 5.0。LynuxWorks宣稱這是第一款基于最新的Linux 2.6內(nèi)核的嵌入式版本,因而對(duì)實(shí)時(shí)性有突破性的支持。而測(cè)試也證明了這一點(diǎn),即新版本的內(nèi)核對(duì)實(shí)時(shí)性的支持確實(shí)有大幅度提高。Linux 2.6之所以更好的支持實(shí)時(shí)計(jì)算,主要因?yàn)?


 。1)更有效率的調(diào)度算法: 在老版本的Linux中,一般有一個(gè)全局的隊(duì)列,它能掃描并且按照優(yōu)先級(jí)安排好就緒狀態(tài)的進(jìn)程并安排他們順序執(zhí)行。而新的Linux 2.6內(nèi)核提供了兩個(gè)隊(duì)列。一個(gè)用于安排就緒的進(jìn)程,一個(gè)用于安排超時(shí)等待的進(jìn)程。這兩個(gè)隊(duì)列都按照優(yōu)先權(quán)的高低對(duì)進(jìn)程進(jìn)行排列并且允許實(shí)時(shí)進(jìn)程共享同一隊(duì)列,從而通過(guò)減少隊(duì)列中的就緒進(jìn)程數(shù)來(lái)提高實(shí)時(shí)性。


 。2)改良的內(nèi)核:雖然Linux 2.6還稱不上是完全的實(shí)時(shí)操作系統(tǒng),但已經(jīng)能夠滿足大部分情況下的實(shí)時(shí)要求。因?yàn)樵诶习姹镜膬?nèi)核中,強(qiáng)占是通過(guò)執(zhí)行代碼調(diào)用的,并且只能由中斷請(qǐng)求(IRQ)、睡眠等來(lái)中斷。而新的內(nèi)核完全支持強(qiáng)占,即一個(gè)新的進(jìn)程能夠在接受到外部中斷后立刻進(jìn)入調(diào)度狀態(tài),因而當(dāng)一個(gè)高優(yōu)先權(quán)的事件到達(dá)后,系統(tǒng)能立刻中斷當(dāng)前進(jìn)程而調(diào)用新的高優(yōu)先權(quán)事件,從而大大縮短了響應(yīng)時(shí)間。


 。3)新的同步原語(yǔ): 眾所周知,程序之間有時(shí)候常需要共享一些資源,例如內(nèi)存或者打印機(jī)等。為了避免競(jìng)爭(zhēng)資源帶來(lái)的混亂,我們常引入一些信號(hào)量來(lái)保證在任一時(shí)刻只有一個(gè)程序在使用某種獨(dú)占性資源。在以往的Linux中,是通過(guò)向內(nèi)核提交一個(gè)系統(tǒng)調(diào)用來(lái)決定是否讓一個(gè)線程繼續(xù)執(zhí)行。但是這樣就引入了一個(gè)問題,即如果通過(guò)系統(tǒng)調(diào)用后內(nèi)核還是決定繼續(xù)讓該線程運(yùn)行,那么系統(tǒng)調(diào)用那部分時(shí)間就完全浪費(fèi)了。而Linux 2.6支持基于用戶空間的快速信號(hào)量。該功能能夠在用戶空間檢查中斷是否必需,只有當(dāng)確有需要的時(shí)候才調(diào)用系統(tǒng)中斷線程。如果發(fā)現(xiàn)實(shí)際上并不需要中斷則不實(shí)行系統(tǒng)調(diào)用,從而節(jié)省了不必要的系統(tǒng)調(diào)用。當(dāng)發(fā)生資源爭(zhēng)用的時(shí)候,該功能同樣使用調(diào)度優(yōu)先權(quán)來(lái)決定哪個(gè)線程應(yīng)該執(zhí)行。


  Linux 2.6除了在實(shí)時(shí)性方面的良好支持,它對(duì)大容量模塊,輸入輸出系統(tǒng)以及代碼移植方面都有更好的支持。


  3. 4 實(shí)時(shí)Linux操作系統(tǒng)商用版本


  實(shí)時(shí)Linux操作系統(tǒng)商用版本有:FSMLabs公司的RTLinuxPro、LynuxWorks的BlueCat RT、 MontaVista的Linux CEE以及TimeSys公司的產(chǎn)品等等。


  4 Monta Vista的Linux CEE產(chǎn)品分析


  Motorola公司在亞洲市場(chǎng)已經(jīng)開發(fā)出其第一款,也是世界第一款由嵌入式Linux和Java搭配的手機(jī):A760,該款手機(jī)所采用的Linux版本為MontaVista公司的Linux Consumer Electronics Edition。而NEC公司也計(jì)劃將MontaVista公司的Linux版本應(yīng)用于其手機(jī)上。


  把傳統(tǒng)的Linux轉(zhuǎn)化為能應(yīng)用于手機(jī)之上的嵌入式Linux系統(tǒng)需要從根本上解決以下三個(gè)主要問題:


 。1)過(guò)于長(zhǎng)的阻塞時(shí)間。


 。2)Linux所采用的非搶占式事件處理方式。


  (3)過(guò)于公平的調(diào)度原則。


  Monta Vista的解決方案:


 。1)正如前文所提到的,Monta Vista正是采用第三種潛在的解決方案,即利用Linux自身所支持的實(shí)時(shí)能力,Monta Vista在Linux基礎(chǔ)上僅對(duì)內(nèi)核做了一些很基本的改動(dòng),生成一個(gè)新的內(nèi)核包,使其完全成為一個(gè)支持搶占式的內(nèi)核。進(jìn)程級(jí)應(yīng)答速度得到無(wú)論從平均水平還是最壞情況下都得到顯著改善。由于該方式是利用Linux自身所支持的實(shí)時(shí)能力而沒有插入新的內(nèi)核,所以該內(nèi)核不會(huì)對(duì)原來(lái)的API產(chǎn)生任何不良影響


 。2)Monta Vista的調(diào)度模塊是完全“開放”,并且符合GPL規(guī)定的Linux模塊,該模塊能很好地進(jìn)行進(jìn)程選擇,從而消除前面所提到的過(guò)于冗長(zhǎng)的阻塞時(shí)間。


 。3)Monta Vista采用了比標(biāo)準(zhǔn)Linux更短的時(shí)間片,從而滿足了實(shí)時(shí)性要求。


  總之,通過(guò)上述解決方案,Monta Vista的嵌入式Linux具有以下特點(diǎn):


 。1)提高了Linux系統(tǒng)響應(yīng)速度。


 。2)保留了標(biāo)準(zhǔn)Linux的API(應(yīng)用程序接口)和基于線程的用戶編程模塊。


 。3)消除了原先采用的“第二層內(nèi)核”。


 。4)可以自由設(shè)置實(shí)時(shí)進(jìn)程的優(yōu)先權(quán)值。


 。5)將時(shí)間片即調(diào)度間隔從原來(lái)的亞毫秒級(jí)減少到150微秒。


  5 結(jié)束語(yǔ)


  雖然嵌入式Linux操作系統(tǒng)和傳統(tǒng)的嵌入式操作系統(tǒng)相比還不夠成熟完善,但是Linux本身所具有的優(yōu)越性使其在移動(dòng)設(shè)備的OS領(lǐng)域具有廣闊的應(yīng)用前景。從發(fā)展趨勢(shì)上,嵌入式Linux很有可能取代現(xiàn)有的OS而成為市場(chǎng)的主流。


  參 考 文 獻(xiàn)


  [1] Handhelds.org: http://www.handhelds.org


  [2] Linuxdevices: http://www.Linuxdevices.com


  [3] Century Software: http://embedded.censoft.com/


  [4] 《Understanding the Linux Kernel, 2nd Edition》 By Daniel P. Bovet, Marco Cesati


  [5] 《uCOSⅡ-ebook3》


  [6] 《Linux內(nèi)核源代碼情景分析》 毛德操 胡希明


  張 盛,南京郵電學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)2002級(jí)碩士研究生,主要的研究方向?yàn)橛?jì)算機(jī)通信與網(wǎng)間互聯(lián)技術(shù)。


  曾 鵬,南京郵電學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系副教授,碩士生導(dǎo)師,現(xiàn)主要研究方向?yàn)橛?jì)算機(jī)通信與網(wǎng)間互聯(lián)技術(shù)。


  
----《中國(guó)數(shù)據(jù)通信》
   

掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無(wú)線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點(diǎn)本月熱點(diǎn)

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息

    最新論壇貼子