Linux內核的嵌入式系統應用
1.4 POSIX線(xiàn)程及NPTL
新的線(xiàn)程模型基于一個(gè)1:1的線(xiàn)程模型(一個(gè)內核線(xiàn)程對應一個(gè)用戶(hù)線(xiàn)程),包括內核對新的 NPTL(Native POSIX Threading Library)的支持,這是對以前內核線(xiàn)程方法的明顯改進(jìn)。2.6內核同時(shí)還提供POSIX signals和POSIX high-resolution timers。POSIX signals不會(huì )丟失,并且可以攜帶線(xiàn)程間或處理器間的通信信息。嵌入式系統要求系統按時(shí)間表執行任務(wù),POSIX timer可以提供1kHz的觸發(fā)器使這一切變得簡(jiǎn)單,從而可以有效地控制進(jìn)度。
1.5 微控制器的支持
Linux2.6 內核加入了多種微控制器的支持。無(wú)MMU的處理器以前只能利用一些改進(jìn)的分支版本,如uClinux,而2.6內核已經(jīng)將其整合進(jìn)了新的內核中,開(kāi)始支持多種流行的無(wú)MMU微控制器,如Dragonball、ColdFire、Hitachi H8/300。Linux在無(wú)MMU控制器上仍舊支持多任務(wù)處理,但沒(méi)有內存保護功能。同時(shí)也加入了許多流行的控制器的支持,如S3C2410等。
1.6 面向應用
嵌入式應用有用戶(hù)定制的特點(diǎn),硬件設計都針對特定應用開(kāi)發(fā),這給系統帶來(lái)對非標準化設計支持的問(wèn)題(如IRQ的管理)。為了更好地實(shí)現,可以采用部件化的操作系統。Linux2.6采用的子系統架構將功能模塊化,可以定制而對其他部分影響最小。同時(shí)Linux2.6提供了多種新技術(shù)的支持以實(shí)現各種應用開(kāi)發(fā),如Advanced Linux Sound Architecture(ALSA)和Video4Linux等,對多媒體信息處理更加方便;對USB2.0的支持,提供更高速的傳輸,增加藍牙無(wú)線(xiàn)接口、音頻數據鏈接和面向鏈接的數據傳輸L2CAP,滿(mǎn)足短距離的無(wú)線(xiàn)連接的需要;而且在2.6內核中還可以配置成無(wú)輸入和顯示的純粹無(wú)用戶(hù)接口系統。
1.2 有效的調度程序
2.6版本的 Linux內核使用了由 Ingo Molnar開(kāi)發(fā)的新的調度器算法,稱(chēng)為O(1)算法,如圖1所示。它在高負載情況下執行得極其出色,并且當有很多處理器并行時(shí)也可以很好地擴展[2]。過(guò)去的調度程序需要查找整個(gè)ready task隊列,并且計算它們的重要性以決定下一步調用的task,需要的時(shí)間隨task數量而改變。O(1)算法則不再每次掃描所有的任務(wù),當task就緒時(shí)被放入一個(gè)活動(dòng)隊列中,調度程序每次從中調度適合的task,因而每次調度都是一個(gè)固定的時(shí)間。任務(wù)運行時(shí)分配一個(gè)時(shí)間片,當時(shí)間片結束,該任務(wù)將放棄處理器并根據其優(yōu)先級轉到過(guò)期隊列中?;顒?dòng)隊列中任務(wù)全部調度結束后,兩個(gè)隊列指針互換,過(guò)期隊列成為當前隊列,調度程序繼續以簡(jiǎn)單的算法調度當前隊列中的任務(wù)。這在多處理器的情況更能提高SMP的效率,平衡處理器的負載,避免進(jìn)程在處理器間的跳躍。
1.3 同步原型與共享內存
多進(jìn)程應用程序需要共享內存和外設資源,為避免競爭采用了互斥的方法保證資源在同一時(shí)刻只被一個(gè)任務(wù)訪(fǎng)問(wèn)。Linux內核用一個(gè)系統調用來(lái)決定一個(gè)線(xiàn)程阻塞或是繼續執行來(lái)實(shí)現互斥,在線(xiàn)程繼續執行時(shí),這個(gè)費時(shí)的系統調用就沒(méi)有必要了。Linux2.6所支持的Fast User-Space Mutexes 可以從用戶(hù)空間檢測是不是需要阻塞線(xiàn)程,只在需要時(shí)執行系統調用終止線(xiàn)程。它同樣采用調度優(yōu)先級來(lái)確定將要執行的進(jìn)程[4]。多處理器嵌入式系統各處理器之間需要共享內存,對稱(chēng)多處理技術(shù)對內存訪(fǎng)問(wèn)采用同等優(yōu)先級,在很大程度上限制了系統的可量測性和處理效率。Linux2.6 則提供了新的管理方法——NUMA(Non Uniform Memory Access)。NUMA根據處理器和內存的拓撲布局,在發(fā)生內存競爭時(shí),給予不同處理器不同級別權限以解決內存搶占瓶頸,提高吞吐量。
評論