唐 甜,徐 杰,張 蕾(中航工業(yè)西安航空計(jì)算技術(shù)研究所)
基于VxWorks的搶占式周期任務(wù)調(diào)度改進(jìn)算法
唐 甜,徐 杰,張 蕾
(中航工業(yè)西安航空計(jì)算技術(shù)研究所)
對傳統(tǒng)的周期任務(wù)調(diào)度算法進(jìn)行了改進(jìn),通過輔助時(shí)鐘對周期任務(wù)進(jìn)行定時(shí),在固有的周期任務(wù)調(diào)度算法的基礎(chǔ)上引入了錯(cuò)峰機(jī)制,使得不同的周期任務(wù)能夠以從高到低的順序錯(cuò)峰執(zhí)行,改善了周期任務(wù)的執(zhí)行時(shí)機(jī),有效的提高了應(yīng)用系統(tǒng)的性能。
VxWorks;搶占式周期任務(wù)調(diào)度
WindRiver公司開發(fā)的實(shí)時(shí)操作系統(tǒng)VxWorks,以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛的應(yīng)用于通信、航空、航天等領(lǐng)域,周期任務(wù)作為實(shí)時(shí)性的基本環(huán)節(jié)被廣泛的應(yīng)用于各種計(jì)算機(jī)控制系統(tǒng)中。
不同的功能模塊執(zhí)行在不同的周期中,這個(gè)不同的周期稱之為周期任務(wù),而調(diào)度這些周期任務(wù)的功能模塊則稱之為周期任務(wù)調(diào)度。
VxWorks內(nèi)核采用基于優(yōu)先級(jí)搶占式(priority-base preemptive)調(diào)度算法和基于時(shí)間片輪轉(zhuǎn)式(round-robin)調(diào)度算法。
基于優(yōu)先級(jí)的搶占式調(diào)度算法,是為系統(tǒng)中的任務(wù)分配一個(gè)介于0到255之間的優(yōu)先級(jí)號(hào),任意時(shí)刻,內(nèi)核把CPU分配給處于就緒態(tài)的優(yōu)先級(jí)最高的任務(wù),若系統(tǒng)內(nèi)核發(fā)現(xiàn)更改優(yōu)先級(jí)的任務(wù)處于就緒態(tài),則立刻保存當(dāng)前任務(wù)的上下文并將其狀態(tài)轉(zhuǎn)變?yōu)樽枞麘B(tài),同時(shí)開始執(zhí)行高優(yōu)先級(jí)任務(wù)的上下文,待高優(yōu)先級(jí)任務(wù)執(zhí)行完畢才開始自行低優(yōu)先級(jí)任務(wù)。
基于時(shí)間片輪轉(zhuǎn)調(diào)度算法,適用于相同優(yōu)先級(jí)的多個(gè)任務(wù)之間,是讓這些任務(wù)中處于就緒態(tài)的任務(wù)公平分享CPU,內(nèi)核讓該組任務(wù)依次輪流執(zhí)行已經(jīng)確定好的時(shí)間片,當(dāng)一個(gè)任務(wù)到達(dá)時(shí),將被排在對尾,待分配給自己的時(shí)間片到來時(shí)執(zhí)行,如果時(shí)間片內(nèi)未執(zhí)行完畢,則繼續(xù)等待下一次時(shí)間片,直到任務(wù)執(zhí)行完畢。
和傳統(tǒng)的使用中斷來創(chuàng)建嵌入式周期任務(wù)調(diào)度方法不同,本文介紹的搶占式周期任務(wù)調(diào)度改進(jìn)算法,是通過輔助時(shí)鐘進(jìn)行基礎(chǔ)定時(shí),進(jìn)而在不同的時(shí)間周期內(nèi)釋放不同周期任務(wù)的信號(hào)量來對周期任務(wù)的定時(shí)周期進(jìn)行設(shè)置。同時(shí),本文提及的算法還修改了傳統(tǒng)周期任務(wù)的執(zhí)行時(shí)機(jī),使得相同時(shí)機(jī)觸發(fā)的周期任務(wù)能夠錯(cuò)峰執(zhí)行,有效的改善了傳統(tǒng)周期任務(wù)調(diào)度的性能。
以輔助時(shí)鐘的時(shí)鐘周期為1ms,創(chuàng)建2ms、4ms和10ms三個(gè)周期任務(wù)為例,本文擬通過創(chuàng)建初始任務(wù)、周期任務(wù)調(diào)度和周期任務(wù)執(zhí)行三個(gè)方面描述本算法。
2.1 創(chuàng)建初始任務(wù)
首先應(yīng)創(chuàng)建輔助時(shí)鐘的定時(shí)周期為1ms,并在此基礎(chǔ)上創(chuàng)建周期任務(wù)調(diào)度任務(wù)、2ms周期任務(wù)、4ms周期任務(wù)以及10ms周期任務(wù),任務(wù)創(chuàng)建完畢后,根據(jù)周期任務(wù)的時(shí)間設(shè)置每個(gè)周期任務(wù)的優(yōu)先級(jí)、掛接函數(shù)等內(nèi)容。本算法設(shè)置的任務(wù)優(yōu)先級(jí)由高到低依次為周期任務(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ù)的定時(shí)周期應(yīng)選取各個(gè)周期任務(wù)的公約數(shù),本算法選取1(單位ms)作為本算法周期任務(wù)調(diào)度的定時(shí)周期。
傳統(tǒng)的周期任務(wù)調(diào)度算法就是根據(jù)定時(shí)器進(jìn)行周期控制,周期時(shí)間到時(shí),根據(jù)周期任務(wù)的優(yōu)先級(jí)決定首先執(zhí)行的是哪個(gè)周期任務(wù),其缺點(diǎn)在于當(dāng)達(dá)到幾個(gè)周期任務(wù)的最小公倍數(shù)時(shí),不同時(shí)間的周期任務(wù)在同一時(shí)刻觸發(fā),而高優(yōu)先級(jí)搶占了低優(yōu)先級(jí)任務(wù)的內(nèi)存空間,導(dǎo)致低優(yōu)先級(jí)的任務(wù)被高優(yōu)先級(jí)多次打斷,若在高優(yōu)先級(jí)任務(wù)列表內(nèi),包含低優(yōu)先級(jí)任務(wù)的相關(guān)數(shù)據(jù)信息,這樣的調(diào)度方式則破壞了低優(yōu)先級(jí)數(shù)據(jù)的一致性,為了改變這種弊端,本文提及的周期任務(wù)調(diào)度圖,分別在次低優(yōu)先級(jí)任務(wù)和低優(yōu)先級(jí)任務(wù)上添加了相對于高優(yōu)先級(jí)周期任務(wù)1ms和2ms的延時(shí)操作,使不同的周期任務(wù)能夠以從高到低的順序錯(cuò)峰執(zhí)行,保證了數(shù)據(jù)的一致性,對周期任務(wù)調(diào)度進(jìn)行模塊設(shè)計(jì)時(shí),則應(yīng)首先獲取該模塊的信號(hào)量,待信號(hào)量獲取成功后,則應(yīng)在不同的時(shí)間周期內(nèi)釋放對應(yīng)周期任務(wù)的相關(guān)信號(hào)量,最后還應(yīng)對相應(yīng)的周期任務(wù)進(jìn)行超時(shí)處理。
2.3 周期任務(wù)執(zhí)行
任務(wù)調(diào)度函數(shù)創(chuàng)建完畢后,就可以設(shè)置各個(gè)周期任務(wù)的執(zhí)行功能了,和周期任務(wù)調(diào)度功能類似,首先也應(yīng)獲取當(dāng)前周期任務(wù)的任務(wù)信號(hào)量,信號(hào)量獲取成功能后方可執(zhí)行具體的周期任務(wù),任務(wù)執(zhí)行完畢后,應(yīng)清除對應(yīng)周期任務(wù)的超時(shí)標(biāo)志。
2.4 仿真結(jié)果
以本所所述算法為例,在仿真平臺(tái)上進(jìn)行開環(huán)仿真,傳統(tǒng)的周期任務(wù)調(diào)度圖件見圖1,本文所述的改進(jìn)算法的周期任務(wù)調(diào)度圖見圖2。

圖1 傳統(tǒng)周期任務(wù)時(shí)間調(diào)度圖
周期任務(wù)調(diào)度在嵌入式操作系統(tǒng)應(yīng)用開發(fā)中有著非常廣泛的應(yīng)用,本文描述的基于VxWorks的搶占式周期任務(wù)調(diào)度改進(jìn)算法,通過輔助時(shí)鐘對周期任務(wù)進(jìn)行定時(shí),在固有的周期任務(wù)調(diào)度算法的基礎(chǔ)上引入了錯(cuò)峰機(jī)制,使得不同的周期任務(wù)能夠以從高到低的順序錯(cuò)峰執(zhí)行,改善了周期任務(wù)的執(zhí)行時(shí)機(jī),有效的提高了應(yīng)用系統(tǒng)的性能。
[1]張長全,符菊梅.VxWorks操作系統(tǒng)在測控設(shè)備中的應(yīng)用.裝備指揮技術(shù)學(xué)院學(xué)報(bào)[J].2006年8月第17卷第4期:117-121.
[2]丁健.計(jì)算機(jī)控制系統(tǒng)的可靠性技術(shù)研究.計(jì)算機(jī)工程與設(shè)計(jì)[J].2007年2月第28卷第4期:985-987
[3]萬柳.μC/OS-II嵌入式操作系統(tǒng)中搶占式調(diào)度策略分析.微計(jì)算機(jī)應(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ù)時(shí)間調(diào)度圖
TP312
B