色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 高手進(jìn)階2.6內(nèi)核的Linux嵌入式系統(tǒng)應(yīng)用

          高手進(jìn)階2.6內(nèi)核的Linux嵌入式系統(tǒng)應(yīng)用

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

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

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

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

          1 Linux 針對嵌入式開發(fā)顯著特點(diǎn)

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

          1.1 可搶占內(nèi)核

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

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

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

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

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

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

          1.3 同步原型與共享內(nèi)存

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

          1.4 POSIX線程及NPTL

          新的線程模型基于一個(gè)1:1的線程模型(一個(gè)內(nèi)核線程對應(yīng)一個(gè)用戶線程),包括內(nèi)核對新的 NPTL(Native POSIX Threading Library)的支持,這是對以前內(nèi)核線程方法的明顯改進(jìn)。2.6內(nèi)核同時(shí)還提供POSIX signals和POSIX high-resolution timers。POSIX signals不會丟失,并且可以攜帶線程間或處理器間的通信信息。嵌入式系統(tǒng)要求系統(tǒng)按時(shí)間表執(zhí)行任務(wù),POSIX timer可以提供1kHz的觸發(fā)器使這一切變得簡單,從而可以有效地控制進(jìn)度。

          1.5 微控制器的支持

          Linux2.6內(nèi)核加入了多種微控制器的支持。無MMU的處理器以前只能利用一些改進(jìn)的分支版本,如uClinux,而2.6內(nèi)核已經(jīng)將其整合進(jìn)了新的內(nèi)核中,開始支持多種流行的無MMU微控制器,如Dragonball、ColdFire、Hitachi H8/300。Linux在無MMU控制器上仍舊支持多任務(wù)處理,但沒有內(nèi)存保護(hù)功能。同時(shí)也加入了許多流行的控制器的支持,如等。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉