<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux內(nèi)核的嵌入式系統(tǒng)應用

          Linux內(nèi)核的嵌入式系統(tǒng)應用

          作者: 時間:2012-04-06 來源:網(wǎng)絡 收藏
          隨著多媒體技術與通訊技術相結合的信息技術的快速發(fā)展和互聯(lián)網(wǎng)的廣泛應用,PC 時代也過渡到了后PC時代。在數(shù)字信息技術和網(wǎng)絡技術高速發(fā)展的后PC時代,嵌入式技術越來越與人們的生活緊密結合。   

          操作系統(tǒng)為用戶使用計算機及其外部設備提供最基本的接口程序,管理計算機上的資源。隨著應用領域的擴大,為了適應不同的應用場合,考慮到系統(tǒng)的靈活性、可伸縮性以及可裁剪性,一種以應用為中心、以計算機技術為基礎、軟硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統(tǒng)—— 嵌入式操作系統(tǒng)隨之延生。   

          Linux 操作系統(tǒng)是一種性能優(yōu)良、源碼公開且被廣泛應用的免費操作系統(tǒng),由于其體積小、可裁減、運行速度高、良好的網(wǎng)絡性能等優(yōu)點,可以作為嵌入式操作系統(tǒng)。隨著 2.6內(nèi)核的發(fā)布,Linux向現(xiàn)有主流的RTOS提供商在市場提出了巨大挑戰(zhàn),例如VxWorks和Wi

          nCE,具有許多新特性,將成為更優(yōu)秀的嵌入式操作系統(tǒng)。   

          Linux的低成本和開放性,為其在領域的應用營造了肥沃的土壤。本文著重介紹Linux 2.6內(nèi)核的新特性及其嵌入式應用中的優(yōu)勢,并將其移植到嵌入式平臺中,成功支持H.264編解碼多媒體系統(tǒng)。   

          1 Linux 2.6內(nèi)核針對嵌入式開發(fā)顯著特點

          實時可靠性是嵌入式應用較為普遍的要求,盡管Linux 2.6 并不是一個真正的實時操作系統(tǒng),但其改進的特性能夠滿足響應需求。Linux 2.6 已經(jīng)在內(nèi)核主體中加入了提高中斷性能和調(diào)度響應時間的改進,其中有三個最顯著的改進:采用可搶占內(nèi)核、更加有效的調(diào)度算法以及同步性的提高[4]。在企業(yè)服務器以及應用領域,Linux 2.6 都是一個巨大的進步。在嵌入式領域,Linux 2.6 除了提高其實時性能,系統(tǒng)的移植更加方便,同時添加了新的體系結構和處理器類型——包括對沒有硬件控制內(nèi)存管理方案的 MMU-less系統(tǒng)的支持,可以支持大容量內(nèi)存模型、微控制器,同時還改善了I/O子系統(tǒng),增添更多的多媒體應用功能[4]。   

          1.1 可搶占內(nèi)核

          在先前的內(nèi)核版本中(包括2.4內(nèi)核)不允許搶占以核心態(tài)運行的任務(包括通過系統(tǒng)調(diào)用進入內(nèi)核模式的用戶任務),只能等待它們自己主動釋放CPU。這樣必然導致一些重要任務延時以等待系統(tǒng)調(diào)用結束。   

          一個內(nèi)核任務可以被搶占,為的是讓重要的用戶應用程序可以繼續(xù)運行。這樣做最主要的優(yōu)勢是極大地增強系統(tǒng)的用戶交互性。   

          2.6內(nèi)核并不是真正的RTOS(Real Time Operation System),其在內(nèi)核代碼中插入了搶占點,允許調(diào)度程序中止當前進程而調(diào)用更高優(yōu)先級的進程,通過對搶占點的測試避免不合理的系統(tǒng)調(diào)用延時。2.6內(nèi)核在一定程度上是可搶占的,比2.4內(nèi)核具備更好的響應性。但也不是所有的內(nèi)核代碼段都可以被搶占,可以鎖定內(nèi)核代碼的關鍵部分,確保CPU的數(shù)據(jù)結構和狀態(tài)始終受到保護而不被搶占。   

          軟件需要滿足最終時間限制與虛擬內(nèi)存請求頁面調(diào)度之間是相互矛盾的。慢速的頁錯誤處理將會破壞系統(tǒng)的實時響應性,而2.6內(nèi)核可以編譯無虛擬內(nèi)存系統(tǒng)避免這個問題,這是解決問題的關鍵,但要求軟件設計者有足夠的內(nèi)存來保證任務的執(zhí)行。

          1.2 有效的調(diào)度程序

          2.6版本的 使用了由 Ingo Molnar開發(fā)的新的調(diào)度器算法,稱為O(1)算法,如圖1所示。它在高負載情況下執(zhí)行得極其出色,并且當有很多處理器并行時也可以很好地擴展[2]。過去的調(diào)度程序需要查找整個ready task隊列,并且計算它們的重要性以決定下一步調(diào)用的task,需要的時間隨task數(shù)量而改變。O(1)算法則不再每次掃描所有的任務,當task就緒時被放入一個活動隊列中,調(diào)度程序每次從中調(diào)度適合的task,因而每次調(diào)度都是一個固定的時間。任務運行時分配一個時間片,當時間片結束,該任務將放棄處理器并根據(jù)其優(yōu)先級轉(zhuǎn)到過期隊列中?;顒雨犃兄腥蝿杖空{(diào)度結束后,兩個隊列指針互換,過期隊列成為當前隊列,調(diào)度程序繼續(xù)以簡單的算法調(diào)度當前隊列中的任務。這在多處理器的情況更能提高SMP的效率,平衡處理器的負載,避免進程在處理器間的跳躍。

          調(diào)度算法

          圖1 O(1)調(diào)度算法   


          1.3 同步原型與

          多進程應用程序需要和外設資源,為避免競爭采用了互斥的方法保證資源在同一時刻只被一個任務訪問。用一個系統(tǒng)調(diào)用來決定一個線程阻塞或是繼續(xù)執(zhí)行來實現(xiàn)互斥,在線程繼續(xù)執(zhí)行時,這個費時的系統(tǒng)調(diào)用就沒有必要了。Linux2.6所支持的Fast User-Space Mutexes 可以從用戶空間檢測是不是需要阻塞線程,只在需要時執(zhí)行系統(tǒng)調(diào)用終止線程。它同樣采用調(diào)度優(yōu)先級來確定將要執(zhí)行的進程[4]。多處理器嵌入式系統(tǒng)各處理器之間需要,對稱多處理技術對內(nèi)存訪問采用同等優(yōu)先級,在很大程度上限制了系統(tǒng)的可量測性和處理效率。Linux2.6 則提供了新的管理方法——NUMA(Non Uniform Memory Access)。NUMA根據(jù)處理器和內(nèi)存的拓撲布局,在發(fā)生內(nèi)存競爭時,給予不同處理器不同級別權限以解決內(nèi)存搶占瓶頸,提高吞吐量。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();