專利名稱:基于VxWorks操作系統(tǒng)的混合任務(wù)集調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,涉及實(shí)時(shí)操作系統(tǒng)的任務(wù)調(diào)度方法,具體涉及了一種基于VxWorks的混合任務(wù)集調(diào)度方法。
背景技術(shù):
VxWorks是美國(guó)WindRiver公司開(kāi)發(fā)的具有工業(yè)領(lǐng)導(dǎo)地位的高性能實(shí)時(shí)操作系統(tǒng),同時(shí)也是現(xiàn)今所有獨(dú)立于處理器的實(shí)時(shí)系統(tǒng)中最具特色的操作系統(tǒng)之一。
兩種經(jīng)典的調(diào)度方法為L(zhǎng)iu C L和Layland J在1973年提出的Rate-Monotonic-RM算法和Earliest Deadline First-EDF算法,參照C L Liu,J W Layland.Scheduling Algorithms for Multiprogramming in a Hard Real-TimeEnvironment[J].Journal of the Association for ComputingMachinery,1973,20(1)116~128。RM算法對(duì)CPU的利用率不高,且只適用于周期任務(wù)集。EDF算法運(yùn)行開(kāi)銷大,且對(duì)任務(wù)具有同一優(yōu)先級(jí)的情況考慮不足。所以在這兩種算法的基礎(chǔ)上,又衍生出一些針對(duì)不同系統(tǒng)的不同解決方案。其中對(duì)于包含周期和非周期任務(wù)的混合任務(wù)集的調(diào)度主要有三種方法空閑時(shí)間法、后臺(tái)執(zhí)行法和輪詢法??臻e時(shí)間法由Robert Davis在1994年提出,參照RobertDavis.Dual Priority SehedulingAmeans of Providing Flexibility in Hard Real TimeSystems.DePartment of ComPuter Seienee,University ofYork,Tech RePYCS-230,1994101-122,該算法從周期任務(wù)調(diào)度的空隙獲得時(shí)間處理非周期任務(wù),它不能保證非周期任務(wù)的實(shí)時(shí)性要求。后臺(tái)執(zhí)行法由J P Lehoczky等人在1987年提出,參照J(rèn) P Lehoczky,L Sha,J K Stronsnider.Enganced Aperiodic Responsiveness inHard Real Time Environments[C].InProc of the 8th IEEE Real Time SystemSymposium.San Jose,CaliforniaIEEE Compter Society Press,1987210~217,該算法對(duì)非周期任務(wù)的處理時(shí)間較少導(dǎo)致其調(diào)度性能很差。由T P Baker等人在2005年提出的輪詢法,參照T M Ghazalie,T P Baker.A periodic Servers in a DeadlineScheduling Environment[J].Journal ofReal Time Systems,2005,9(1)31-67,該算法周期性的為非周期任務(wù)提供時(shí)間片,大大優(yōu)于后臺(tái)執(zhí)行法,但是該方法的最大缺點(diǎn)是如果在為非周期任務(wù)提供的時(shí)間片內(nèi)沒(méi)有非周期任務(wù)執(zhí)行時(shí),則該時(shí)間片將被浪費(fèi),降低了CPU的利用率。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述已有調(diào)度方法實(shí)時(shí)性低,運(yùn)算量大,CPU利用率低的問(wèn)題,提供一種基于VxWorks操作系統(tǒng)的混合任務(wù)集調(diào)度方法,以提高CPU利用率,減小調(diào)度非周期任務(wù)時(shí)的響應(yīng)時(shí)間,提高系統(tǒng)實(shí)時(shí)性。
為了達(dá)到上述目的,本發(fā)明采用的技術(shù)方案包括如下步驟 (1)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用庫(kù)函數(shù)taskSpawn()創(chuàng)建混合任務(wù)集中各任務(wù),并設(shè)定各任務(wù)的優(yōu)先級(jí),該混合任務(wù)集包含若干周期任務(wù)、若干非周期任務(wù)和一個(gè)特殊周期任務(wù),同時(shí)為特殊周期任務(wù)創(chuàng)建信號(hào)量semIdT,信號(hào)量semIdT初始值為滿; (2)對(duì)創(chuàng)建的混合任務(wù)集進(jìn)行如下可調(diào)度性判斷 2a)求出所有非周期任務(wù)的最大執(zhí)行時(shí)間和到來(lái)的最小周期; 2b)根據(jù)最大執(zhí)行時(shí)間和到來(lái)的最小周期,計(jì)算各任務(wù)的最大響應(yīng)時(shí)間 其中,i表示混合任務(wù)集中的一個(gè)任務(wù),k表示混合任務(wù)集中周期任務(wù)的個(gè)數(shù),tin+1和tin分別表示迭代到第n+1和第n次時(shí)的最大響應(yīng)時(shí)間,Hi表示在時(shí)間ti內(nèi)優(yōu)先級(jí)高于τi并且已就緒的周期任務(wù)集,τk為Hi中的任務(wù),Tk和Ck分別是τk的周期和最大執(zhí)行時(shí)間,ψi表示在時(shí)間ti內(nèi)已就緒的非周期任務(wù)集,j表示混合任務(wù)集中非周期任務(wù)的個(gè)數(shù),τj為ψi中的任務(wù),Rj′和Cj′分別是τj的最小周期和最大執(zhí)行時(shí)間。
2c)比較各任務(wù)的最大響應(yīng)時(shí)間和任務(wù)時(shí)限 timax≤Ti(1≤i≤n) 其中,timax表示任務(wù)τi的最大響應(yīng)時(shí)間,Ti表示任務(wù)τi的時(shí)限,若系統(tǒng)中所有任務(wù)實(shí)例的最大響應(yīng)時(shí)間均小于各自的時(shí)限,則系統(tǒng)可調(diào)度,否則不可調(diào)度; 2d)若任務(wù)集不可調(diào)度,調(diào)整特殊周期任務(wù)的周期,跳回步驟2b);若任務(wù)集可調(diào)度,在保證可調(diào)度性的條件下,根據(jù)系統(tǒng)的實(shí)時(shí)性要求調(diào)節(jié)特殊周期任務(wù)的周期; (3)對(duì)混合任務(wù)集中的周期任務(wù)進(jìn)行如下調(diào)度 3a)各個(gè)周期任務(wù)在每一次運(yùn)行前調(diào)用操作系統(tǒng)中vxworks的庫(kù)函數(shù)taskDelay(T)延遲一段時(shí)間,T表示任務(wù)被延遲的Tick數(shù); 3b)根據(jù)操作系統(tǒng)VxWorks所提供的基于優(yōu)先級(jí)的搶占式調(diào)度算法調(diào)度所有周期任務(wù); (4)對(duì)混合任務(wù)集中的非周期任務(wù)進(jìn)行如下調(diào)度 4a)分別為各個(gè)非周期任務(wù)創(chuàng)建信號(hào)量,初始值為空; 4b)執(zhí)行特殊周期任務(wù),首先判斷是否滿足第一個(gè)非周期任務(wù)設(shè)定的運(yùn)行條件,若滿足,則釋放第一個(gè)非周期任務(wù)所對(duì)應(yīng)的信號(hào)量使該非周期任務(wù)運(yùn)行,第一個(gè)非周期任務(wù)運(yùn)行完畢后將再次阻塞,特殊周期任務(wù)將繼續(xù)往下運(yùn)行;若不滿足,則繼續(xù)判斷下一個(gè)非周期任務(wù)的運(yùn)行條件,依次類推,直至判斷完所有的條件,然后跳回步驟3a)。
本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn) (1)本發(fā)明由于在任務(wù)調(diào)度前先判斷了混合任務(wù)集的可調(diào)度性,從而克服了許多混合調(diào)度方法中非周期任務(wù)調(diào)度性能低的問(wèn)題,提高CPU的利用率。
(2)本發(fā)明由于在混合任務(wù)集中創(chuàng)建了一個(gè)特殊的周期任務(wù)來(lái)調(diào)度非周期任務(wù),從而減小了調(diào)度非周期任務(wù)時(shí)的響應(yīng)時(shí)間,提高系統(tǒng)的實(shí)時(shí)性。
圖1是本發(fā)明的實(shí)現(xiàn)框圖; 圖2是本發(fā)明中對(duì)混合任務(wù)集進(jìn)行可調(diào)度性判斷的流程圖; 圖3是本發(fā)明中周期任務(wù)的調(diào)度流程圖; 圖4是本發(fā)明中結(jié)合信號(hào)量機(jī)制的非周期任務(wù)調(diào)度流程圖。
具體實(shí)施例方式 下面結(jié)合附圖和程序偽碼對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行詳細(xì)說(shuō)明。
在具體實(shí)施方式
中,使用到的特殊周期任務(wù)的偽碼為 void Specialtask {while(1){ taskDelay(periodT); if(......) { semGive(semId[1]); } else semGive(semIdT); semTake(semIdT,WAIT_FOREVER); if(......) { semGive(semId[2]); } else semGive(semIdT); semTake(semIdT,WAIT_FOREVER); ......;/*other cases*/ } } 參見(jiàn)圖1,本發(fā)明的實(shí)現(xiàn)步驟如下 步驟1,創(chuàng)建任務(wù)。
1a)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用庫(kù)函數(shù)taskSpawn()創(chuàng)建混合任務(wù)集中各任務(wù),并設(shè)定各任務(wù)的優(yōu)先級(jí),該混合任務(wù)集包含若干周期任務(wù)、若干非周期任務(wù)和一個(gè)特殊周期任務(wù),函數(shù)taskSpawn()的具體調(diào)用方式如下taskSpawn(″task1″,Priority,0,STACK_SIZE,(FUNCPTR)Task1,0,0,0,0,0,0,0,0,0,0) 其中,task1為任務(wù)名,Priority為該任務(wù)的優(yōu)先級(jí),STACK_SIZE為任務(wù)分配的堆棧大小,Task1為任務(wù)函數(shù)的入口地址。
對(duì)所有任務(wù)設(shè)置優(yōu)先級(jí)時(shí)包括對(duì)周期任務(wù)和非周期任務(wù)優(yōu)先級(jí)的設(shè)定,周期任務(wù)根據(jù)RM算法確定其優(yōu)先級(jí),即周期越短,優(yōu)先級(jí)越高;非周期任務(wù)的優(yōu)先級(jí)高于混合任務(wù)集中其它所有任務(wù)的優(yōu)先級(jí),且每一個(gè)非周期任務(wù)的優(yōu)先級(jí)都相同; 1b)創(chuàng)建特殊周期任務(wù)的信號(hào)量,特殊周期任務(wù)的信號(hào)量置為滿。
步驟2,對(duì)混合任務(wù)集進(jìn)行可調(diào)度性檢測(cè)。
本步驟的具體實(shí)現(xiàn),參照?qǐng)D2如下 2a)記錄各個(gè)非周期任務(wù)的開(kāi)始執(zhí)行的時(shí)間和執(zhí)行完成的時(shí)間,求出所有非周期任務(wù)的最大執(zhí)行時(shí)間和到來(lái)的最小周期; 2b)根據(jù)最大執(zhí)行時(shí)間和到來(lái)的最小周期,利用改進(jìn)后的時(shí)間需求法計(jì)算各任務(wù)的最大響應(yīng)時(shí)間,該時(shí)間需求法是用于確定周期任務(wù)集可調(diào)度性的方法,其基本思想是計(jì)算各周期任務(wù)實(shí)例的最大響應(yīng)時(shí)間,并與任務(wù)時(shí)限相比較,若系統(tǒng)中所有任務(wù)實(shí)例的最大響應(yīng)時(shí)間均小于各自的時(shí)限,則系統(tǒng)可調(diào)度,根據(jù)下式計(jì)算最大響應(yīng)時(shí)間 其中,tin+1和tin分別表示迭代到第n+1和第n次時(shí)的最大響應(yīng)時(shí)間,Hi表示在時(shí)間ti內(nèi)優(yōu)先級(jí)高于τi并且已就緒的周期任務(wù)集,τk為Hi中的任務(wù),Tk和Ck分別是τk的周期和最大執(zhí)行時(shí)間,為使此方法用于本發(fā)明中混合任務(wù)集的可調(diào)度性判斷,對(duì)計(jì)算最大響應(yīng)時(shí)間的方法進(jìn)行改進(jìn) 其中,ψi表示在時(shí)間ti內(nèi)已就緒的非周期任務(wù)集,j表示混合任務(wù)集中非周期任務(wù)的個(gè)數(shù),τj為ψi中的任務(wù),Tj′和Cj′分別是τj的最小周期和最大執(zhí)行時(shí)間; 2c)將步驟2b)中求出的各個(gè)任務(wù)的最大響應(yīng)時(shí)間與其任務(wù)時(shí)限相比較,若所有任務(wù)的最大響應(yīng)時(shí)間均小于其任務(wù)時(shí)限,則系統(tǒng)可調(diào)度,否則系統(tǒng)不可調(diào)度; 2d)若系統(tǒng)不可調(diào)度,適當(dāng)延長(zhǎng)特殊周期任務(wù)的周期,再跳到步驟2b)進(jìn)行判斷,循環(huán)進(jìn)行,直到使得特殊周期任務(wù)找到一個(gè)合適的周期使系統(tǒng)可調(diào)度;若系統(tǒng)可調(diào)度,在保證系統(tǒng)可調(diào)度的條件下,根據(jù)實(shí)時(shí)性要求調(diào)整特殊周期任務(wù)的周期。
步驟3,對(duì)周期任務(wù)進(jìn)行調(diào)度。
本步驟的具體實(shí)現(xiàn),參照?qǐng)D3如下 3a)遍歷已經(jīng)準(zhǔn)備就緒的周期任務(wù)隊(duì)列,執(zhí)行其中優(yōu)先級(jí)最高的周期任務(wù); 3b)調(diào)用操作系統(tǒng)vxworks中的庫(kù)函數(shù)taskDelay(T),使得步驟3a)中開(kāi)始執(zhí)行的周期任務(wù)延時(shí)T個(gè)ticks,判斷是否延時(shí)完畢,若延時(shí)完畢,則繼續(xù)往下執(zhí)行該周期任務(wù);若延時(shí)沒(méi)有完畢,則跳回步驟3a); 步驟4,對(duì)非周期任務(wù)進(jìn)行調(diào)度。
本步驟的具體實(shí)現(xiàn),參照?qǐng)D4如下 4a)分別為各個(gè)非周期任務(wù)創(chuàng)建信號(hào)量,初始值為空; 4b)執(zhí)行特殊周期任務(wù),判斷是否滿足第一個(gè)非周期任務(wù)設(shè)定的運(yùn)行條件,若滿足,則特殊周期任務(wù)釋放與第一個(gè)非周期任務(wù)對(duì)應(yīng)的信號(hào)量,使其由空變?yōu)闈M,第一個(gè)非周期任務(wù)獲得信號(hào)量后開(kāi)始運(yùn)行,因其優(yōu)先級(jí)最高,所以不會(huì)被任何任務(wù)搶占;若不滿足,則釋放信號(hào)量特殊任務(wù)對(duì)應(yīng)的信號(hào)量semIdT使其由空變?yōu)闈M,即信號(hào)量semIdT由不可用變?yōu)榭捎?,特殊周期任?wù)獲得信號(hào)量semIdT,同時(shí)semIdT由滿變?yōu)榭?,特殊周期任?wù)由斷點(diǎn)處繼續(xù)往下運(yùn)行; 4c)繼續(xù)按照步驟4b)的方法繼續(xù)判斷下一個(gè)非周期任務(wù),直到判斷完第N個(gè)周期任務(wù),然后按照步驟3調(diào)用周期任務(wù)。
權(quán)利要求
1.一種基于VxWorks操作系統(tǒng)的混合任務(wù)集調(diào)度方法,包括以下步驟
(1)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用庫(kù)函數(shù)taskSpawn( )創(chuàng)建混合任務(wù)集中各任務(wù),并設(shè)定各任務(wù)的優(yōu)先級(jí),該混合任務(wù)集包含若干周期任務(wù)、若干非周期任務(wù)和一個(gè)特殊周期任務(wù),同時(shí)為特殊周期任務(wù)創(chuàng)建信號(hào)量semIdT,信號(hào)量semIdT初始值為滿;
(2)對(duì)創(chuàng)建的混合任務(wù)集進(jìn)行如下可調(diào)度性判斷
2a)求出所有非周期任務(wù)的最大執(zhí)行時(shí)間和到來(lái)的最小周期;
2b)根據(jù)最大執(zhí)行時(shí)間和到來(lái)的最小周期,計(jì)算各任務(wù)的最大響應(yīng)時(shí)間
其中,i表示混合任務(wù)集中的一個(gè)任務(wù),k表示混合任務(wù)集中周期任務(wù)的個(gè)數(shù),tin+1和tin分別表示迭代到第n+1和第n次時(shí)的最大響應(yīng)時(shí)間,Hi表示在時(shí)間ti內(nèi)優(yōu)先級(jí)高于τi并且已就緒的周期任務(wù)集,τk為Hi中的任務(wù),Tk和Ck分別是τk的周期和最大執(zhí)行時(shí)間,Ψi表示在時(shí)間ti內(nèi)已就緒的非周期任務(wù)集,j表示混合任務(wù)集中非周期任務(wù)的個(gè)數(shù),τj為Ψi中的任務(wù),T′j和C′j分別是τj的最小周期和最大執(zhí)行時(shí)間。
2c)比較各任務(wù)的最大響應(yīng)時(shí)間和任務(wù)時(shí)限
timax≤Ti(1≤i≤n)
其中,timax表示任務(wù)τi的最大響應(yīng)時(shí)間,Ti表示任務(wù)τi的時(shí)限,若系統(tǒng)中所有任務(wù)實(shí)例的最大響應(yīng)時(shí)間timax均小于各自的時(shí)限Ti,則系統(tǒng)可調(diào)度,否則不可調(diào)度;
2d)若任務(wù)集不可調(diào)度,適當(dāng)延長(zhǎng)特殊周期任務(wù)的周期,跳回步驟2b);若任務(wù)集可調(diào)度,在保證可調(diào)度性的條件下,根據(jù)系統(tǒng)的實(shí)時(shí)性要求調(diào)節(jié)特殊周期任務(wù)的周期;
(3)對(duì)混合任務(wù)集中的周期任務(wù)進(jìn)行如下調(diào)度
3a)各個(gè)周期任務(wù)在每一次運(yùn)行前調(diào)用操作系統(tǒng)中vxworks的庫(kù)函數(shù)taskDelay(T)延遲一段時(shí)間,T表示任務(wù)被延遲的Tick數(shù);
3b)根據(jù)操作系統(tǒng)VxWorks所提供的基于優(yōu)先級(jí)的搶占式調(diào)度算法調(diào)度所有周期任務(wù);
(4)對(duì)混合任務(wù)集中的非周期任務(wù)進(jìn)行如下調(diào)度
4a)分別為各個(gè)非周期任務(wù)創(chuàng)建信號(hào)量,初始值為空;
4b)執(zhí)行特殊周期任務(wù),首先判斷是否滿足第一個(gè)非周期任務(wù)設(shè)定的運(yùn)行條件,若滿足,則釋放第一個(gè)非周期任務(wù)所對(duì)應(yīng)的信號(hào)量使該非周期任務(wù)運(yùn)行,第一個(gè)非周期任務(wù)運(yùn)行完畢后將再次阻塞,特殊周期任務(wù)將繼續(xù)往下運(yùn)行;若不滿足,則繼續(xù)判斷下一個(gè)非周期任務(wù)的運(yùn)行條件,依次類推,直至判斷完所有的運(yùn)行條件,然后跳回步驟3。
2.如權(quán)利要求1所述的基于VxWorks的混合任務(wù)集調(diào)度方法,其中步驟(1)中所述的設(shè)定各任務(wù)的優(yōu)先級(jí),包括對(duì)周期任務(wù)和非周期任務(wù)優(yōu)先級(jí)的設(shè)定,周期任務(wù)的優(yōu)先級(jí)是根據(jù)Rate-monotonic-RM算法,即周期越短,優(yōu)先級(jí)越高;非周期任務(wù)的優(yōu)先級(jí)高于周期任務(wù)的優(yōu)先級(jí),且每一個(gè)非周期任務(wù)的優(yōu)先級(jí)都相同。
3.如權(quán)利要求1所述的基于VxWorks的混合任務(wù)集調(diào)度方法,其中步驟4b)中所述的當(dāng)非周期任務(wù)運(yùn)行完畢后,特殊周期任務(wù)將繼續(xù)往下運(yùn)行,是指從上次運(yùn)行的斷點(diǎn)處繼續(xù)往下運(yùn)行。
全文摘要
本發(fā)明公開(kāi)了一種基于VxWorks操作系統(tǒng)的混合任務(wù)集調(diào)度方法,主要克服了許多混合調(diào)度方法中非周期任務(wù)實(shí)時(shí)性差,CPU利用率低的問(wèn)題。其步驟為創(chuàng)建混合任務(wù)集并創(chuàng)建一個(gè)特殊周期任務(wù),為該特殊周期任務(wù)創(chuàng)建一個(gè)信號(hào)量;進(jìn)行任務(wù)調(diào)度前用改進(jìn)后的時(shí)間需求算法判斷混合任務(wù)集的可調(diào)度性;周期任務(wù)根據(jù)VxWorks所提供的基于優(yōu)先級(jí)的搶占式調(diào)度算法進(jìn)行調(diào)度;在特殊周期任務(wù)的運(yùn)行過(guò)程中依次判斷非周期任務(wù)的運(yùn)行條件,若滿足某非周期任務(wù)的運(yùn)行條件則釋放相應(yīng)信號(hào)量使該非周期任務(wù)運(yùn)行,該非周期任務(wù)運(yùn)行完畢后釋放信號(hào)量使特殊周期任務(wù)運(yùn)行。本發(fā)明提高了CPU的利用率,減小了調(diào)度非周期任務(wù)時(shí)的響應(yīng)時(shí)間,可用于對(duì)非周期任務(wù)較多的混合任務(wù)集的調(diào)度。
文檔編號(hào)G06F9/46GK101609417SQ20091002336
公開(kāi)日2009年12月23日 申請(qǐng)日期2009年7月17日 優(yōu)先權(quán)日2009年7月17日
發(fā)明者征 相, 娟 萬(wàn), 湯書(shū)苑, 峰 苑, 鵬 任, 楠 趙 申請(qǐng)人:西安電子科技大學(xué)