国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

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

2019-11-03 09:18:00
字體:
來源:轉載
供稿:網友

張 盛 曾 鵬

南京郵電學院 南京210003


  摘 要

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

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

  1 前 言

  1. 1 Linux操作系統的引入

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

  1. 2 Linux操作系統在移動設備領域的優勢

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

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

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

  1. 3 Linux操作系統占用空間情況

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

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

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

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

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

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

  本文將重點討論在嵌入式Linux系統中如何實現實時性的問題:

  3.1 問題的提出

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

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

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

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

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

  3.2 問題的解決方案

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

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

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

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

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

  3. 3 Linux 2.6解決方案

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

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

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

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

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

  3. 4 實時Linux操作系統商用版本

  實時Linux操作系統商用版本有:FSMLabs公司的RTLinuxPro、LynuxWorks的BlueCat RT、 MontaVista的Linux CEE以及TimeSys公司的產品等等。

  4 Monta Vista的Linux CEE產品分析

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

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

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

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

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

  Monta Vista的解決方案:

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

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

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

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

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

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

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

 ?。?)可以自由設置實時進程的優先權值。

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

  5 結束語

  雖然嵌入式Linux操作系統和傳統的嵌入式操作系統相比還不夠成熟完善,但是Linux本身所具有的優越性使其在移動設備的OS領域具有廣闊的應用前景。從發展趨勢上,嵌入式Linux很有可能取代現有的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內核源代碼情景分析》 毛德操 胡希明

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

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

  
----《中國數據通信》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会理县| 临高县| 方城县| 舒兰市| 桑植县| 德钦县| 巴里| 秦安县| 台安县| 和田市| 依兰县| 玉田县| 岳阳市| 托克托县| 大埔县| 东源县| 富平县| 潼关县| 措美县| 安平县| 枝江市| 贵阳市| 盐亭县| 肃北| 天祝| 五峰| 香格里拉县| 赤壁市| 星子县| 宝清县| 连城县| 攀枝花市| 乌兰浩特市| 邵武市| 溧阳市| 镇宁| 通州市| 静安区| 南雄市| 东方市| 鲁山县|