Linux分時操作系統的實時性分析
2. 搶占式內核體系結構的設計
為了解決Linux實現硬實時的最大障礙,使Linux內核成為完全可被搶占實時內核,典型的實現方案是雙核結構。使用實時核來運行實時任務,Linux內核來運行非實時任務。例如:對于實時數據采樣分析而言,利用實時內核運行一個實時任務來完成數據采集,另一個實時任務完成數據分析和控制輸出功能;同時利用Linux內核上運行的界面來進行數據顯示。如圖1所示。
本文引用地址:http://www.104case.com/article/151227.htm
圖1 雙內核結構
在Linux內核和硬件之間加個小的實時核,由它管理中斷,提供一些必要的功能,如底層任務創建、中斷服務程序,并且為底層任務、ISR和Linux進程之間進行通信排隊;而Linux內核本身則成為優先級最低的Idletask。
對實時性要求強的應用編寫成實時任務,在實時內核上直接運行。Linux內核可以被優先級更高的實時任務搶占。對于Linux內核的修改主要集中在三方面:(1) 在Linux內核中影響實時性的地方增加控制點,使內核在控制點可以被搶占,減少內核搶占延遲;(2) 將執行時間較長的系統劃分為幾個甚至是十幾個較小的塊分別執行,使實時任務隨時中斷非實時任務;(3) 根據實際需要,增加部分功能。
隨著嵌入式應用的深入,特別是在數字通信和網絡中的應用,多核結構的處理器也陸續上市。如:Motorola公司研發的MPC8260PowerQUICC||融合了兩個CPU-嵌入式PowerPC內核和通信處理模塊(CPM);Infineon公司推出的TC10GP和增強型TC1130都是三核(TriCore)結構的微處理器,這些處理器的產生對于Linux應用中的實時性都大有幫助。 3. 實時調度的算法研究
常用的實時調度算法有:基于優先級的調度算法(priority-drivenscheduling,PD);基于時間驅動的調度算法(time-drivenscheduling,TD);基于比例共享的調度算法(share-drivensched2uling,SD)。基于優先級的調度算法 調度器以優先級作為尋求下一個任務執行的依據。可分為如下兩種類型:
(1) 靜態優先級調度算法:該算法給系統中所有進程都靜態的分配一個優先級。靜態優先級的分配可以根據應用的屬性來進行,例如任務的周期、用戶優先級或者其他預先確定的策略。RM(RateMonotonic)是一種典型的靜態優先級調度算法,它根據任務執行周期的長短來決定調度優先級,執行周期小的任務具有較高的優先級。
(2) 動態優先級調度算法:這種算法根據任務的資源需求來動態的分配任務的優先級。EDF(earliestdeadlinefirst)算法是一種典型的動態優先級調度算法,該算法根據就緒隊列中各個任務的截止期限來分配優先級,具有最近截止期限的任的優先級最高。
基于時間驅動的調度算法
該算法本質上是一種設計時就確定下來的離線的靜態調度方法。在系統的設計階段,在明確系統中所有處理的情況下,對于各個任務的開始、切換以及結束時間等事先組出明確的安排和設計。
基于比例共享的調度算法
這是一種越來越受到關注的實時調度模式,基于GPS(generalprocessorscheduling)的算法,其基本思想就是按照一定的權重(CPU使用的比例)對一組需要調度的任務進行調度,使其執行時間與權重完全成正比??梢酝ㄟ^兩種方法來實現比例共享調度算法:(1)是調節各個就緒進程出現在當前調度隊列隊首的頻率,并調度隊首的進程執行;(2)是逐次調度就緒隊列中的各個進程投入運行,但根據分配的權重調節分配給每個進程的運行時間片。比例共享算法包括輪轉法、公平共享法、公平隊列法和彩票調度法等幾類。
每一種調度策略都有自己的優越性和不足。在這里我們提出了一種宏觀調度結構,通過設計和構造多屬性和多調度器的選擇機制,使三種實時調度策略的應用都得到支持,相對于只對單種調度策略提供支持的方案,拓展了系統的可使用范圍。宏觀調度結構如圖2所示。
評論