唐 甜,徐 杰,張 蕾(中航工業(yè)西安航空計算技術(shù)研究所)
基于VxWorks的搶占式周期任務(wù)調(diào)度改進算法
唐 甜,徐 杰,張 蕾
(中航工業(yè)西安航空計算技術(shù)研究所)
對傳統(tǒng)的周期任務(wù)調(diào)度算法進行了改進,通過輔助時鐘對周期任務(wù)進行定時,在固有的周期任務(wù)調(diào)度算法的基礎(chǔ)上引入了錯峰機制,使得不同的周期任務(wù)能夠以從高到低的順序錯峰執(zhí)行,改善了周期任務(wù)的執(zhí)行時機,有效的提高了應(yīng)用系統(tǒng)的性能。
VxWorks;搶占式周期任務(wù)調(diào)度
WindRiver公司開發(fā)的實時操作系統(tǒng)VxWorks,以其良好的可靠性和卓越的實時性被廣泛的應(yīng)用于通信、航空、航天等領(lǐng)域,周期任務(wù)作為實時性的基本環(huán)節(jié)被廣泛的應(yīng)用于各種計算機控制系統(tǒng)中。
不同的功能模塊執(zhí)行在不同的周期中,這個不同的周期稱之為周期任務(wù),而調(diào)度這些周期任務(wù)的功能模塊則稱之為周期任務(wù)調(diào)度。
VxWorks內(nèi)核采用基于優(yōu)先級搶占式(priority-base preemptive)調(diào)度算法和基于時間片輪轉(zhuǎn)式(round-robin)調(diào)度算法。
基于優(yōu)先級的搶占式調(diào)度算法,是為系統(tǒng)中的任務(wù)分配一個介于0到255之間的優(yōu)先級號,任意時刻,內(nèi)核把CPU分配給處于就緒態(tài)的優(yōu)先級最高的任務(wù),若系統(tǒng)內(nèi)核發(fā)現(xiàn)更改優(yōu)先級的任務(wù)處于就緒態(tài),則立刻保存當前任務(wù)的上下文并將其狀態(tài)轉(zhuǎn)變?yōu)樽枞麘B(tài),同時開始執(zhí)行高優(yōu)先級任務(wù)的上下文,待高優(yōu)先級任務(wù)執(zhí)行完畢才開始自行低優(yōu)先級任務(wù)。
基于時間片輪轉(zhuǎn)調(diào)度算法,適用于相同優(yōu)先級的多個任務(wù)之間,是讓這些任務(wù)中處于就緒態(tài)的任務(wù)公平分享CPU,內(nèi)核讓該組任務(wù)依次輪流執(zhí)行已經(jīng)確定好的時間片,當一個任務(wù)到達時,將被排在對尾,待分配給自己的時間片到來時執(zhí)行,如果時間片內(nèi)未執(zhí)行完畢,則繼續(xù)等待下一次時間片,直到任務(wù)執(zhí)行完畢。
和傳統(tǒng)的使用中斷來創(chuàng)建嵌入式周期任務(wù)調(diào)度方法不同,本文介紹的搶占式周期任務(wù)調(diào)度改進算法,是通過輔助時鐘進行基礎(chǔ)定時,進而在不同的時間周期內(nèi)釋放不同周期任務(wù)的信號量來對周期任務(wù)的定時周期進行設(shè)置。同時,本文提及的算法還修改了傳統(tǒng)周期任務(wù)的執(zhí)行時機,使得相同時機觸發(fā)的周期任務(wù)能夠錯峰執(zhí)行,有效的改善了傳統(tǒng)周期任務(wù)調(diào)度的性能。
以輔助時鐘的時鐘周期為1ms,創(chuàng)建2ms、4ms和10ms三個周期任務(wù)為例,本文擬通過創(chuàng)建初始任務(wù)、周期任務(wù)調(diào)度和周期任務(wù)執(zhí)行三個方面描述本算法。
2.1 創(chuàng)建初始任務(wù)
首先應(yīng)創(chuàng)建輔助時鐘的定時周期為1ms,并在此基礎(chǔ)上創(chuàng)建周期任務(wù)調(diào)度任務(wù)、2ms周期任務(wù)、4ms周期任務(wù)以及10ms周期任務(wù),任務(wù)創(chuàng)建完畢后,根據(jù)周期任務(wù)的時間設(shè)置每個周期任務(wù)的優(yōu)先級、掛接函數(shù)等內(nèi)容。本算法設(shè)置的任務(wù)優(yōu)先級由高到低依次為周期任務(wù)調(diào)度任務(wù)、2ms周期任務(wù)、4ms周期任務(wù)以及10ms周期任務(wù)。
2.2 周期任務(wù)調(diào)度
初始任務(wù)創(chuàng)建完畢后,則應(yīng)開始設(shè)置周期任務(wù)調(diào)度的具體算法,周期任務(wù)調(diào)度函數(shù)的定時周期應(yīng)選取各個周期任務(wù)的公約數(shù),本算法選取1(單位ms)作為本算法周期任務(wù)調(diào)度的定時周期。
傳統(tǒng)的周期任務(wù)調(diào)度算法就是根據(jù)定時器進行周期控制,周期時間到時,根據(jù)周期任務(wù)的優(yōu)先級決定首先執(zhí)行的是哪個周期任務(wù),其缺點在于當達到幾個周期任務(wù)的最小公倍數(shù)時,不同時間的周期任務(wù)在同一時刻觸發(fā),而高優(yōu)先級搶占了低優(yōu)先級任務(wù)的內(nèi)存空間,導(dǎo)致低優(yōu)先級的任務(wù)被高優(yōu)先級多次打斷,若在高優(yōu)先級任務(wù)列表內(nèi),包含低優(yōu)先級任務(wù)的相關(guān)數(shù)據(jù)信息,這樣的調(diào)度方式則破壞了低優(yōu)先級數(shù)據(jù)的一致性,為了改變這種弊端,本文提及的周期任務(wù)調(diào)度圖,分別在次低優(yōu)先級任務(wù)和低優(yōu)先級任務(wù)上添加了相對于高優(yōu)先級周期任務(wù)1ms和2ms的延時操作,使不同的周期任務(wù)能夠以從高到低的順序錯峰執(zhí)行,保證了數(shù)據(jù)的一致性,對周期任務(wù)調(diào)度進行模塊設(shè)計時,則應(yīng)首先獲取該模塊的信號量,待信號量獲取成功后,則應(yīng)在不同的時間周期內(nèi)釋放對應(yīng)周期任務(wù)的相關(guān)信號量,最后還應(yīng)對相應(yīng)的周期任務(wù)進行超時處理。
2.3 周期任務(wù)執(zhí)行
任務(wù)調(diào)度函數(shù)創(chuàng)建完畢后,就可以設(shè)置各個周期任務(wù)的執(zhí)行功能了,和周期任務(wù)調(diào)度功能類似,首先也應(yīng)獲取當前周期任務(wù)的任務(wù)信號量,信號量獲取成功能后方可執(zhí)行具體的周期任務(wù),任務(wù)執(zhí)行完畢后,應(yīng)清除對應(yīng)周期任務(wù)的超時標志。
2.4 仿真結(jié)果
以本所所述算法為例,在仿真平臺上進行開環(huán)仿真,傳統(tǒng)的周期任務(wù)調(diào)度圖件見圖1,本文所述的改進算法的周期任務(wù)調(diào)度圖見圖2。
圖1 傳統(tǒng)周期任務(wù)時間調(diào)度圖
周期任務(wù)調(diào)度在嵌入式操作系統(tǒng)應(yīng)用開發(fā)中有著非常廣泛的應(yīng)用,本文描述的基于VxWorks的搶占式周期任務(wù)調(diào)度改進算法,通過輔助時鐘對周期任務(wù)進行定時,在固有的周期任務(wù)調(diào)度算法的基礎(chǔ)上引入了錯峰機制,使得不同的周期任務(wù)能夠以從高到低的順序錯峰執(zhí)行,改善了周期任務(wù)的執(zhí)行時機,有效的提高了應(yīng)用系統(tǒng)的性能。
[1]張長全,符菊梅.VxWorks操作系統(tǒng)在測控設(shè)備中的應(yīng)用.裝備指揮技術(shù)學(xué)院學(xué)報[J].2006年8月第17卷第4期:117-121.
[2]丁健.計算機控制系統(tǒng)的可靠性技術(shù)研究.計算機工程與設(shè)計[J].2007年2月第28卷第4期:985-987
[3]萬柳.μC/OS-II嵌入式操作系統(tǒng)中搶占式調(diào)度策略分析.微計算機應(yīng)用[J].2005年第1期第26卷第1期:116-118
Improved priority-base PreemptiveScheduling Arithmetics based on VxWorks
Tang Tian,Xu Jie,Zhag Lei
(AVIC Computing Technique Research Institute)
Improved traditional priority-base Preemptive Scheduling Arithmetics and timing cycle task by the auxiliary clock.Peak mechanism is introduced based on the inherent task scheduling algorithm,which make different cycle task in order from high to low peak.improved cycle task execution time and improve the performance effectively of the application system.
VxWorks preemptiveScheduling Arithmetics
圖2 本文周期任務(wù)時間調(diào)度圖
TP312
B