新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux內核的嵌入式系統應用

        Linux內核的嵌入式系統應用

        作者: 時間:2012-04-06 來源:網絡 收藏
          

        1.4 POSIX線程及NPTL

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

        1.5 微控制器的支持

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

        1.6 面向應用

        嵌入式應用有用戶定制的特點,硬件設計都針對特定應用開發,這給系統帶來對非標準化設計支持的問題(如IRQ的管理)。為了更好地實現,可以采用部件化的操作系統。Linux2.6采用的子系統架構將功能模塊化,可以定制而對其他部分影響最小。同時Linux2.6提供了多種新技術的支持以實現各種應用開發,如Advanced Linux Sound Architecture(ALSA)和Video4Linux等,對多媒體信息處理更加方便;對USB2.0的支持,提供更高速的傳輸,增加藍牙無線接口、音頻數據鏈接和面向鏈接的數據傳輸L2CAP,滿足短距離的無線連接的需要;而且在2.6內核中還可以配置成無輸入和顯示的純粹無用戶接口系統。

        1.2 有效的調度程序

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

        1.3 同步原型與

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阆中市| 连平县| 汝南县| 前郭尔| 汕头市| 南陵县| 育儿| 柳江县| 忻州市| 思南县| 井陉县| 北辰区| 元朗区| 贵南县| 桃园县| 八宿县| 加查县| 大荔县| 中山市| 福州市| 沧州市| 云南省| 郴州市| 云和县| 临夏县| 鄄城县| 定州市| 隆回县| 沁水县| 武城县| 娄烦县| 晋江市| 凤冈县| 商都县| 乳山市| 芒康县| 凤翔县| 木里| 麦盖提县| 潜江市| 临邑县|