時間片輪轉調度在微控制器C8051F020中的實現及應用
在微機控制領域中,多數系統是實時控制系統。實時的含義是對隨機發生的外部事件做出及時的響應并對其進行處理。為了更好地完成實時數據的采集、處理、存儲和相應的多種實時控制操作,必須同時考慮到實時性和多任務并行性這2個因素。既要保證系統以足夠快的速度對外部事件進行響應并處理,又能在宏觀上并行執行多個任務。實時多任務系統依靠適當的任務調度方法來決定在系統中哪個任務可以獲得CPU和其他系統資源,哪個任務暫時退出運行狀態,從而達到實時處理多任務的目的。時間片輪轉算法是實現多任務調度的常用算法。在這種算法中,如果將某個時間片分配給某個任務,那么在此時間片內,這個任務獲得CPU并運行,然后在下個時間片到來時又將CPU分配給另一個任務。這樣,并發任務在微觀上交替運行,而在宏觀上并行執行。
本文引用地址:http://www.j9360.com/article/171899.htm1實時多任務機制的實現
實時控制系統中允許多個實時任務并行執行,在一些測控系統中有數據采集、端口檢測、模擬量輸出、開關量輸出數據處理和存儲等多種任務。在單片機中,要達到這樣的效果:在微觀上,某一時刻只能運行一個任務,但在宏觀上這些任務是同時運行的。
實時任務通過分時處理實現,相當于操作系統中的進程。每個任務有3種狀態,即運行狀態、就緒狀態和等待狀態,某個任務一旦建立后即處于這3種狀態之一。處于運行狀態的任務獨占CPU 和其他一些資源;就緒狀態是該任務已獲得了除處理機以外的一切所需資源,運行條件滿足,只因為缺少CPU而不能運行;等待狀態是一個任務在等待某個事件(如其他任務的信息,等待某系統資源等)的發生而暫時停止執行。通過有效的任務調度來完成3個狀態的轉變。在實時多任務系統中任務調度算法的優劣直接關系到系統的實時性與并行性。
時間片輪轉法是根據某一時間片的切換輪流地調度所有就緒任務的方法:將CPU 的運行時間劃分為許多小的時間片,由調度程序按一定順序分配給不同任務,每個任務分別在自己的時間片內訪問CPU,中斷實現系統對外界信息的實時響應,同時擔當時間片切換的驅動力。考慮到不同任務的實時性要求不同,不能統一劃分,我們采取以最小時間片為基準,其他時間片是他的倍數,這樣就提高了系統的資源利用率。
在這種調度算法中,時間片的選擇很重要,通常要考慮所要完成任務的數目、各任務的不同實時性要求、系統的處理能力等因素。
2.1系統分析
要模擬火車剎車的過程,完成對火車閘片的摩擦系數的測試,需實現以下幾個步驟:
(1)用模擬輸出端口輸出0~10 V電壓作為變頻器的頻率設定值,使變頻器控制電機按升速時間將車輪轉速逐步提升,按升速時間達到設定速度。
(2)據設定氣壓和實際氣壓的比較決定應該排氣還是進氣,并執行相應的打開/關閉進氣閥或出氣閥的操作,使氣壓達到設定值。在未測試前要不斷檢測氣壓狀態,保持氣壓的穩定。
(3)測試按鈕按下時,打開加壓閥,開始剎車。由于要模擬火車的剎車慣量,電機不能立即停止,因此在加壓的同時,要使變頻器控制電機逐步減速。系統按降速時間降到0,在這個減速剎車的過程中,同時記錄從測力傳感器采集并平滑后的數據放入指定變量區。
既要保證任務的實時響應,又要實現多任務在宏觀上的同時進行,我們采用時間片輪轉調度算法,且根據不同任務的不同實時性要求, 以最小時間片為基準,劃分不同時間片。該測試系統要實現數據采集,模擬量輸出,開關量輸出/讀入等操作,這些操作對應的具體任務及其實時性要求如表1所示。
實時性要求相同的任務,為同一級別,用狀態變量來區分任務是處于就緒狀態,還是等待狀態,從而決定是否分配時間片。
2.2時間片的選定
在時間片輪轉算法中,時間片的大小對系統性能有很大影響。如果時間片太大,大到每個任務都能在該時間片內執行完畢,則時間片輪轉調度算法就失去意義,而且可能耽 誤一些實時性較強的任務;時間片過小,會使一些任務來不及響應。由上面的分析,可以看出在這個測試系統中,所要選擇的基準時間片為1 ms,其他的時間片為他的倍數。
評論