- 相關推薦
一種基于比特表的實時多任務新調度算法
摘要:主要討論常見的幾種多任務實時性處理算法的優缺點,提出一種更能滿足多任務實時性處理的算法——基于比特表的時間片算法。這種算法主要是把常規的比特表中的任務按照時間片進行分配,以很好地完成實時性要求高且任務時間較長的任務,而不影響其它實時性要求更高的任務的完成。引言
在微機控制領域中,許多單片機應用系統是實時控制系統RTCS(Real Time Control System)。在實時控制系統中,為了很好地完成外界信息的實時測量、計算和相應的多種實時控制操作,必須達到兩個設計目標;實時性和并行性。即既要保證系統對外界信息以足夠快的速度進行相應處理,又要同時完成多種任務操作。在這里,多種任務之間的調度是個關鍵。
RTCS中允許多個實時任務并行地運行。例如,一測控系統中,具有數據采集、數據計算、鍵盤處理、定時打印等任務。在單機系統中,這些任務在宏觀上是同時運行的,但在微觀上只有一個任務運行。在RTCS中每個任務有三種狀態,即運行狀態、就緒狀態和空閑狀態。某個任務一旦建立后即處于這三種狀態之一。處于運行狀態的任務獨占CPU和其它一些資源;就緒狀態是某個任務現在應該運行,但由于其它任務正在運行,故只能暫時等待;當激發某個任務的條件不完備時,此任務就處于空閑狀態。
RTCS中的多個任務依靠任務調度程序來決定系統中哪個任務可以獲得CPU等資源或應暫時退出運行狀態等,從而完成每個任務三態間的轉換。在RTCS中,任務調度算法的優劣直接關系到系統的實時性能與并行性能。
RTCS中較簡單的任務調度算法有“先來先執行的調度算法”、“按時間片循環執行的調度算法”。前者,當實時性比較差的任務長時間占用CPU時,會使得實時性較高的任務得不到及時處理,影響系統的實時性;后者,按照“先入先出”的原則激活某個任務,并分配給它們相等的時間片,從而使得多個任務有平等的享用CPU的權利。當時間片用完時,讓任務“暫時”又處于就緒狀態,并激活下一個任務。這種算法的實時性有一定程序的提高,但由于各任務簡單均勻地循環輪回,從而使得實時性要求較高的任務得不到優先處理。由于各時間片相等且固定,很容易被某些緊急任務打斷。在實時性要求較高而且任務較多的復雜情況下,各個任務的實時性要求不盡相同,不能簡單地均勻分時處理任務。
基于比特表的任務調度算法,關鍵在于將CPU的全部時間化成若干個相等的時隙,同時根據任務的數目制定一張表格,以此來指示某一時刻的任務運行。它把任務按照實時性要求分成中斷級、時鐘級、基本級三類,而且它們的優先級依次遞減。優先級越高,就越處于比特表的頂端位置。比特表是按照任務的優先級排隊的,首先滿足實時性較強的中斷級和時鐘級,而不管實時性最低的基本級任務。這樣,時鐘級任務一定能得到即時有效的處理,其實時性可以得到較好的保障,基本級任務可以沒有時間限制。但是,時鐘級任務的實時性并不是完全能夠得到保障。下面舉例討論比特表算法的不足之處。
圖2 任務的啟動順序和運行時間
假定有表1所示的五種任務,按照常規比特表算法根本無法設計出這樣的比特表。當時鐘級的各級每次運行時間之和沒有達到5ms時,比特表算法能夠很好地滿足系統實時性要求;然而,當中斷級和時鐘級的每次運行時間之和大于或者等于最高級實時性要求,更有甚者,當有一個時鐘級任務的運行時間超過最高級實時性要求時,比特表算法就會失效。因為常規的比特表算法要求,只要激活比特表中安排的中斷級和時鐘級任務就必須一次執行完,否則,如果這個任務被中斷就無法再得到執行。由于圖像處理的運行時間為5ms,加上中斷級任務執行時間,因此設計時隙必須大于5ms;而比特表的設計方法時隙只可能小于等于5ms(中斷級任務和實時性最高的時鐘級任務決定的)。所以,無論安排怎樣的比徨表都無法使任務D滿足實時性要求;谶@兩種情況,本文提出一種用賦有優先權的時間來填充比特表的算法,以改善這兩種情況。
表1 實時性要求和各任務運行時間表
1 比特表的改進算法
這種改進算法的關系在于把各任務劃分為若干時間片,然后再根據實時性要求填入比特表中。根據比特表的設計方法,時隙間隔定為5ms,總時隙數為LCM(10/5,20/5,30/5)=6。把各中斷級和時鐘級任務運行時間的最大公約數定為時間片。即有如下計算公式:
T=GCD{Ti}
T為時間片,Ti為時鐘級和中斷級任務實時性要求,GCD(Greatest Common Divisor)求最大公約數,LCM(Lowest Common Multiple)求最小公倍數。
本例中的時間片T=GCD{0.5,1,2.5,1,5}=0.5ms。(假設時鐘中斷處理時間為0.5ms)。
時間片的分配,必須遵循以下原則:
①滿足實時性要求;
②確保每一個時隙中所有分配的任務都必須完全運行;
③均衡考慮CPU對各任務的運行,優先考慮時鐘級任務和中斷級任務。
按上述原則,中斷級任務分1個時間片,時鐘級1分配2個時間片,時鐘級2分配3個時間片,時鐘級3分配1個時間片,時鐘級4分配2個時間片,而將每個時隙剩余的時間分配給基本級任務。這樣,即使是在系統最繁忙的時候也有一個時間片分配給基本級任務,從而彌補了比特表算法的不足。
綜上所述,設計圖1所示的比特表。
此比特表的時隙任務安排完全滿足實時性要求。A任務每時隙運行1次,每時隙運行2個時間片。A任務每5ms運行1次。B任務每10ms運行1次,C任務每20ms運行1次
【一種基于比特表的實時多任務新調度算法】相關文章:
一種基于加權空間平滑的新MUSIC算法03-07
一種H.263比特率轉碼速率控制的新算法03-07
基于貨物當前狀態全程跟蹤的調度算法03-07
一種新的實用安全加密標準算法-Camellia算法03-20
一種改進的無線鏈路調度算法研究03-07
準實時公交調度模型的研究03-07
一種基于RFID技術的機器人定位算法11-22