嵌入式Linux在移動設備中的應用



張 盛 曾 鵬


南京郵電學院 南京210003



  摘 要

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


  關鍵詞 Linux 嵌入式Linux 實時性 嵌入式 Monta Vista


  1 前 言


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


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


  1. 2 Linux操作系統(tǒng)在移動設備領域的優(yōu)勢


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


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


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


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


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


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


  目前國際嵌入式Linux市場的商用版本有:


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


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


  3 關于嵌入式Linux實時性問題的思考


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


  3.1 問題的提出


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


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


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


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


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


  3.2 問題的解決方案


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


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


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


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


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


  3. 3 Linux 2.6解決方案


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


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


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


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


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


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


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


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


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


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


 。1)過于長的阻塞時間。


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


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


  Monta Vista的解決方案:


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


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


 。3)Monta Vista采用了比標準Linux更短的時間片,從而滿足了實時性要求。


  總之,通過上述解決方案,Monta Vista的嵌入式Linux具有以下特點:


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


  (2)保留了標準Linux的API(應用程序接口)和基于線程的用戶編程模塊。


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


  (4)可以自由設置實時進程的優(yōu)先權值。


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


  5 結束語


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


  參 考 文 獻


  [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)核源代碼情景分析》 毛德操 胡希明


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


  曾 鵬,南京郵電學院計算機科學與技術系副教授,碩士生導師,現(xiàn)主要研究方向為計算機通信與網(wǎng)間互聯(lián)技術。


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

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

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息