一種多個周期任務(wù)的調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機控制領(lǐng)域,具體涉及一種多個周期任務(wù)的調(diào)度方法。
【背景技術(shù)】
[0002] 在嵌入式實時系統(tǒng)中,周期任務(wù)的調(diào)度一直是研究的熱點,周期任務(wù)的調(diào)度好壞 是影響系統(tǒng)運行效率的重要因素。關(guān)于周期任務(wù)調(diào)度方法的研究層出不窮,產(chǎn)生了許多實 時調(diào)度方法:例如經(jīng)典的FCFS算法,RM算法,優(yōu)先級繼承、反轉(zhuǎn),靜態(tài)的速率單調(diào)調(diào)度方法 RMS和時限單調(diào)調(diào)度方法DMS以及動態(tài)的最后期限驅(qū)動算法DD和最短處理時間有限算法 SPTF等,還有很多的改進(jìn)算法。以往的調(diào)度方法側(cè)重主要研究調(diào)度任務(wù)的選擇依據(jù)以及如 何進(jìn)行調(diào)度任務(wù)周期的確定,未考慮在已有多個周期任務(wù)的情況下,如何根據(jù)任務(wù)的周期 和調(diào)度時機進(jìn)行調(diào)度。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的是:設(shè)計實現(xiàn)一種針對不同調(diào)度周期和調(diào)度時機的多個周期任務(wù)調(diào) 度方法,實現(xiàn)在嵌入式實時系統(tǒng)中多個周期任務(wù)的調(diào)度,在占用CPU時間和資源較少的情 況下保證周期任務(wù)的正確調(diào)度。
[0004] 本發(fā)明的技術(shù)方案是:
[0005] -種多個周期任務(wù)的調(diào)度方法,其特殊之處在于:包括以下步驟:
[0006] 1】根據(jù)多個周期任務(wù)的調(diào)度周期和調(diào)度時機,求取由所有的調(diào)度周期和調(diào)度時機 組成的一組數(shù)的最大公約數(shù)pnum ;
[0007] 2】求取每個周期任務(wù)的調(diào)度周期和調(diào)度時機分別相對于pnum的倍數(shù),并將每個 周期任務(wù)的*function、At_period、At_turn組成一個字段依序存儲在緩沖區(qū);*fuction代 表周期任務(wù)入口,At_period代表(調(diào)度周期/pnum)、At_turn代表(調(diào)度時機/pnum+1);
[0008] 3】設(shè)置時鐘中斷的時間值為pnum ;
[0009] 4】在時鐘中斷觸發(fā)后,按照存儲順序?qū)彌_區(qū)中的每一個周期任務(wù)信息進(jìn)行查 詢,判斷每一個周期任務(wù)的At_turn的值是否達(dá)到周期任務(wù)執(zhí)行條件;如果某一個周期任 務(wù)的At_turn的值達(dá)到周期任務(wù)執(zhí)行條件,則進(jìn)入該周期任務(wù)指定的周期任務(wù)入口,執(zhí)行 周期任務(wù);如果某一個周期任務(wù)的At_turn的值未達(dá)到周期任務(wù)執(zhí)行條件,則不執(zhí)行周期 任務(wù),等待下一次時鐘中斷觸發(fā)。
[0010] 上述步驟4】具體為:判斷當(dāng)前周期任務(wù)的At_turn的值是否為1,如果當(dāng)前周期任 務(wù)的At_turn的值為1,則進(jìn)入當(dāng)前周期任務(wù)指定的周期任務(wù)入口 *function,執(zhí)行周期任 務(wù),并將At_period的值賦值給At_tum ;如果當(dāng)前周期任務(wù)的At_turn的值不為1,則At_ turn減1,不執(zhí)行當(dāng)前周期任務(wù),等待下一次時鐘中斷觸發(fā)。
[0011] 本發(fā)明的優(yōu)點是:將所有周期任務(wù)各自的周期時間的最大公約數(shù)設(shè)置為時鐘中斷 的觸發(fā)時間間隔值,在周期時間值倍數(shù)關(guān)系明顯即最大公約數(shù)的值比較大的情況下,CPU可 以間隔較長時間對周期任務(wù)進(jìn)行一次處理,工作效率大大提高;周期任務(wù)的調(diào)度周期和調(diào) 度時機各數(shù)據(jù)之間倍數(shù)關(guān)系越明顯,則方法效率越高,在時鐘中斷中對周期任務(wù)進(jìn)行查詢 處理,可以有效保證周期任務(wù)按照自己的調(diào)度時機和調(diào)度周期正確執(zhí)行且各周期任務(wù)執(zhí)行 互不干擾。本方法易于實現(xiàn),計算量少,采用的數(shù)據(jù)結(jié)構(gòu)和軟件結(jié)構(gòu)易于修改和擴(kuò)展,任務(wù) 調(diào)度方式靈活,適用面廣。
【具體實施方式】
[0012] 本發(fā)明側(cè)重研究在已知周期任務(wù)周期和調(diào)度時機的情況下,如何根據(jù)周期任務(wù)的 調(diào)度周期和調(diào)度時機進(jìn)行多個周期任務(wù)實時調(diào)度的方法。即在一次調(diào)度中,對所有周期到 達(dá)的任務(wù)進(jìn)行調(diào)度,周期任務(wù)之間的調(diào)度互不干擾同時不占用CPU太多的時間和資源。
[0013] 本發(fā)明周期任務(wù)調(diào)度主要關(guān)注調(diào)度時機和調(diào)度周期,不同的周期任務(wù)一般都會采 用不同的調(diào)度時機和調(diào)度周期。本發(fā)明設(shè)計一種采用時鐘中斷和查詢方式的周期任務(wù)調(diào)度 方法,使得每個周期任務(wù)能夠按照任務(wù)本身的調(diào)度時機和調(diào)度周期進(jìn)行調(diào)度,而不受別的 周期任務(wù)的干擾。
[0014] 本發(fā)明的具體方法步驟是:
[0015] 1】根據(jù)多個周期任務(wù)的調(diào)度周期和調(diào)度時機,求取由所有的調(diào)度周期和調(diào)度時機 組成的一組數(shù)的最大公約數(shù)pnum ;每一個周期任務(wù)都會對應(yīng)一個調(diào)度周期和一個調(diào)度時 機,則η個周期任務(wù)就會有η個調(diào)度周期和η個調(diào)度時機,針對η個調(diào)度周期和η個調(diào)度時 機組成的一組數(shù),求取最大公約數(shù)pnum ;
[0016] 2】求取每個周期任務(wù)的調(diào)度周期和調(diào)度時機分別相對于pnum的倍數(shù),并將每個 周期任務(wù)的*function、At_period、At_turn組成一個字段依序存儲在緩沖區(qū);*fuction代 表周期任務(wù)入口,At_period代表(調(diào)度周期/pnum)、At_turn代表(調(diào)度時機/pnum+1);
[0017] 3】設(shè)置時鐘中斷的時間值為pnum ;
[0018] 4】在時鐘中斷觸發(fā)后,按照存儲順序?qū)彌_區(qū)中的每一個周期任務(wù)信息進(jìn)行查 詢,判斷每一個周期任務(wù)的At_turn的值是否達(dá)到周期任務(wù)執(zhí)行條件;如果某一個周期任 務(wù)的At_turn的值達(dá)到周期任務(wù)執(zhí)行條件,則進(jìn)入該周期任務(wù)指定的周期任務(wù)入口,執(zhí)行 周期任務(wù);如果某一個周期任務(wù)的At_turn的值未達(dá)到周期任務(wù)執(zhí)行條件,則不執(zhí)行周期 任務(wù),等待下一次時鐘中斷觸發(fā)。
[0019] 步驟4】具體可以采用以下方式:判斷當(dāng)前周期任務(wù)的At_turn的值是否為1,如果 當(dāng)前周期任務(wù)的At_turn的值為1,則進(jìn)入當(dāng)前周期任務(wù)指定的周期任務(wù)入口 *function, 執(zhí)行周期任務(wù),并將At_period的值賦值給At_tum ;如果當(dāng)前周期任務(wù)的At_turn的值不 為1,則At_turn減1,不執(zhí)行當(dāng)前周期任務(wù),等待下一次時鐘中斷觸發(fā)。
[0020] 偽代碼如下:
[0021]
【主權(quán)項】
1. 一種多個周期任務(wù)的調(diào)度方法,其特征在于:包括以下步驟: 1】根據(jù)多個周期任務(wù)的調(diào)度周期和調(diào)度時機,求取由所有的調(diào)度周期和調(diào)度時機組成 的一組數(shù)的最大公約數(shù)pnum ; 2】求取每個周期任務(wù)的調(diào)度周期和調(diào)度時機分別相對于pnum的倍數(shù),并將每個周期 任務(wù)的*function、At_period、At_turn組成一個字段依序存儲在緩沖區(qū);*fuction代表周 期任務(wù)入口,At_period代表(調(diào)度周期/pnum)、At_turn代表(調(diào)度時機/pnum+1); 3】設(shè)置時鐘中斷的時間值為pnum ; 4】在時鐘中斷觸發(fā)后,按照存儲順序?qū)彌_區(qū)中的每一個周期任務(wù)信息進(jìn)行查詢,判 斷每一個周期任務(wù)的At_turn的值是否達(dá)到周期任務(wù)執(zhí)行條件;如果某一個周期任務(wù)的 At_turn的值達(dá)到周期任務(wù)執(zhí)行條件,則進(jìn)入該周期任務(wù)指定的周期任務(wù)入口,執(zhí)行周期任 務(wù);如果某一個周期任務(wù)的At_turn的值未達(dá)到周期任務(wù)執(zhí)行條件,則不執(zhí)行周期任務(wù),等 待下一次時鐘中斷觸發(fā)。
2. 根據(jù)權(quán)利要求1所述的多個周期任務(wù)的調(diào)度方法,其特征在于:步驟4】具體為:判 斷當(dāng)前周期任務(wù)的At_turn的值是否為1,如果當(dāng)前周期任務(wù)的At_turn的值為1,則進(jìn)入 當(dāng)前周期任務(wù)指定的周期任務(wù)入口 *function,執(zhí)行周期任務(wù),并將At_period的值賦值給 At_tum ;如果當(dāng)前周期任務(wù)的At_turn的值不為1,則At_turn減1,不執(zhí)行當(dāng)前周期任務(wù), 等待下一次時鐘中斷觸發(fā)。
【專利摘要】本發(fā)明提供一種多個周期任務(wù)的調(diào)度方法,求取由所有的調(diào)度周期和調(diào)度時機組成的一組數(shù)的最大公約數(shù)pnum;設(shè)置時鐘中斷的時間值為pnum;在時鐘中斷觸發(fā)后,對每一個周期任務(wù)信息進(jìn)行查詢,判斷每一個周期任務(wù)的是否達(dá)到周期任務(wù)執(zhí)行條件;如果達(dá)到周期任務(wù)執(zhí)行條件,則進(jìn)入該周期任務(wù)指定的周期任務(wù)入口;如果未達(dá)到周期任務(wù)執(zhí)行條件,則不執(zhí)行周期任務(wù),等待下一次時鐘中斷觸發(fā)。可以有效保證周期任務(wù)按照自己的調(diào)度時機和調(diào)度周期正確執(zhí)行且各周期任務(wù)執(zhí)行互不干擾。易于實現(xiàn),計算量少,采用的數(shù)據(jù)結(jié)構(gòu)和軟件結(jié)構(gòu)易于修改和擴(kuò)展,任務(wù)調(diào)度方式靈活,適用面廣。
【IPC分類】G06F9-48
【公開號】CN104699533
【申請?zhí)枴緾N201310664716
【發(fā)明人】劉明, 李娟 , 王瑞, 張鵬仙
【申請人】中國航空工業(yè)集團(tuán)公司第六三一研究所
【公開日】2015年6月10日
【申請日】2013年12月9日