一種適用于數(shù)控系統(tǒng)的混合任務調(diào)度方法
【技術領域】
[0001] 本發(fā)明設及實時數(shù)控系統(tǒng)領域,具體是一種適用于數(shù)控系統(tǒng)的混合任務調(diào)度方 法。
【背景技術】
[0002] 數(shù)控系統(tǒng)負責實時控制數(shù)控機床的正確運行,所處理的任務按觸發(fā)時間的周期性 及是否具有實時性要求,可分為實時周期任務、偶發(fā)任務和非周期任務。為了保證數(shù)控系統(tǒng) 的加工質(zhì)量,需對其混合任務進行合理調(diào)度,在保證實時周期任務與偶發(fā)任務的實時性要 求的同時,盡可能縮短非周期任務的響應時間。
[0003] 傳統(tǒng)的后臺執(zhí)行法在系統(tǒng)中沒有已就緒的實時周期任務或偶發(fā)任務時調(diào)度執(zhí)行 非周期任務,此方法易于實現(xiàn),但在系統(tǒng)具有較高的周期任務負載時,非周期任務可用的處 理器時間過少,其響應時間不可預測。
[0004] Spuri 等人發(fā)表的《Scheduling aperiodic tasks in dynamic priority systems》(刊物《Journal of Real-Time Systems》1996, 10(2) :179-210)提出了邸L Server算法,通過精確計算實時周期任務調(diào)度中的空閑時間的分布及大小,并將空閑時間 盡可能提前,使非周期任務盡快得到響應。邸L Server算法能夠提供最短的非周期任務響 應時間,但它在每個非周期任務到達時都需要計算當前的空閑時間,最壞情況下算法的計 算復雜度為〇(N · η),(其中,η表示系統(tǒng)中實時周期任務的個數(shù),N表示運η個周期任務的 總作業(yè)數(shù)),其計算開銷過大而不適于實際應用。 陽〇化]涂剛等人發(fā)表的《基于動態(tài)優(yōu)先級策略的最優(yōu)軟非周期任務調(diào)度算法》(刊物《計 算機研究與發(fā)展2004, 41 (11) :2026-2034.》)提出了 ISA算法,離線地確定實時周期任務的 執(zhí)行區(qū)間及空閑區(qū)間等相關參數(shù),并在任務調(diào)度過程中同步更新相關參數(shù),當非周期任務 到達時,根據(jù)當前參數(shù)值計算非周期任務可用的最大空閑時間。此算法需要存儲并維護大 量參數(shù),其計算及存儲開銷較大。
【發(fā)明內(nèi)容】
[0006] 針對現(xiàn)有技術中混合任務調(diào)度算法在在改善算法調(diào)度性能并降低算法調(diào)度開銷 方面存在的不足之處,本發(fā)明要解決的技術問題是提供一種適用于數(shù)控系統(tǒng)的混合任務調(diào) 度方法。
[0007] 為解決上述技術問題,本發(fā)明采用的技術方案是:一種適用于數(shù)控系統(tǒng)的混合任 務調(diào)度方法,包括W下步驟:
[0008] 步驟1)為數(shù)控系統(tǒng)中的實時周期任務與非周期任務建立計算模型;
[0009] 步驟2)任務調(diào)度開始前,通過離線的預分配算法為實時周期任務預留處理器時 間,確定實時周期任務的通知時間表;
[0010] 步驟3)任務調(diào)度開始后,根據(jù)實時周期任務的通知時間表對數(shù)控系統(tǒng)中的實時 周期任務與非周期任務進行混合調(diào)度。
[0011] 所述實時周期任務的計算模型為:實時周期任務用集合Γρ= (τ 1,τ 2,...,τ。} 表示,每個實時周期任務τ 1用四元組< φ i,Ti,Di,Ci>表示,其中,1《i《η,η為實時周 期任務的數(shù)量,Φι為τ 1的相位,Ti為τ 1的周期,Di為τ 1的相對截止時限,Ci為τ 1的 執(zhí)行時間;第i個實時周期任務τ 1的第j次作業(yè)表示為τ 1,。
[0012] 所述非周期任務的計算模型為:數(shù)控系統(tǒng)中已到達的非周期任務構成集合Γ\ρ = {>1,〇2,...},每個非周期任務Uk用二元組<rk,ek>表示,其中,k為自然數(shù),r,表示υ k 的到達時間,ek表示υ k的執(zhí)行時間。
[0013] 所述離線的預分配算法采用反向邸F算法計算每個實時周期任務的每次作業(yè)的 預留處理器時間的起始時刻。
[0014] 所述實時周期任務的通知時間表α由實時周期任務用集合Γρ中各個實時周期 作業(yè)的預留處理器時間按先后順序排列而成。
[0015] 所述任務調(diào)度開始后,根據(jù)實時周期任務的通知時間表對數(shù)控系統(tǒng)中的實時周期 任務與非周期任務進行混合調(diào)度,包括W下步驟:
[0016] W通知時間表α為輸入,從時刻0開始對實時周期任務Γ Ρ進行邸F調(diào)度;
[0017] 在調(diào)度時刻t,若無待執(zhí)行的非周期任務,則調(diào)度執(zhí)行實時周期任務的作業(yè)序列, 根據(jù)實時周期作業(yè)的執(zhí)行情況同步更新實時周期任務的通知時間表α ;
[0018] 若有待執(zhí)行的非周期任務到達,將該非周期任務插入到非周期任務隊列,當時刻t =α-head時,設α-head = am。,則作業(yè)Tm。搶占其他周期任務及非周期任務執(zhí)行直至作 業(yè)τ。。完成,更新實時周期任務的通知時間表α ;當時刻t< a-head時,則從非周期任務 隊列的首任務開始,順序執(zhí)行非周期任務隊列中的非周期任務,直至非周期任務隊列為空 或到達通知時間表的首元素時間α -head ;若既無待執(zhí)行的非周期任務,也無已就緒的實 時周期作業(yè),則處理器空閑,設置時刻t為下一調(diào)度時刻;
[0019] 重復執(zhí)行上一步驟直至超周期結束;所述超周期為所有實時周期任務的周期的最 小公倍數(shù)。
[0020] 所述更新實時周期任務的通知時間表包括W下步驟:當實時周期作業(yè)τ 1,在時刻 ti執(zhí)行了 X個時間單位,則后移作業(yè)τ。的預留處理器時間的起始時刻aw使τ。的預留 處理器時間減少X個時間單位,同時調(diào)整其余受影響的節(jié)點;當τ 1,完成時,從通知時間表 α中刪除曰。節(jié)點。
[0021] 所述若有待執(zhí)行的非周期任務到達,將該非周期任務按先到先服務的原則插入到 非周期任務隊列。
[0022] 本發(fā)明能夠在保證實時周期任務的截止時限要求的同時,W較小的計算及存儲開 銷取得最短的非周期任務響應時間。
【附圖說明】 陽02引圖1為實施例中任務集Γρ?= { τ 1,Τζ} = { < 0,5,2 >,< 0,9,4 > }在 backwards-EDF算法下的預分配結果;
[0024]圖 2 為實施例中任務集 Γρ?= { τ 1,τ 2} = { < 0, 5, 2 >,< 0, 9, 4 > }與 Tapi ={>1,uj = (<11,3>,<27,4>}在本發(fā)明方法下的混合調(diào)度結果; 陽0巧]圖3為混合調(diào)度算法的性能隨Up變化的情況;
[0026] 其中,圖3(a)為非周期作業(yè)平均響應時間隨Up變化的情況,圖3(b)為非周期作 業(yè)完成率隨Up變化的情況。
【具體實施方式】
[0027] 下面結合附圖及實施例對本發(fā)明做進一步的詳細說明。
[0028] 考慮數(shù)控系統(tǒng)中的實時周期性任務與非周期性任務的混合調(diào)度。將系統(tǒng)中所有 實時周期任務用集合Γρ= (τ 1,τ 2,...,τ。}表示,η e妒為實時周期任務的個數(shù)。每 個實時周期任務了1(1《1《11)用四元組<(1)1,1'1,〇1,。>表示,其中(1)1為11的相位, Ti為τ 1的周期,Di為τ 1的相對截止時限,Ci為τ 1的執(zhí)行時間。實時周期性任務的每一 次執(zhí)行稱為它的一個作業(yè),所W不是同一個概念。i用來標識任務,j用來標識運個任務的 第幾次執(zhí)行,也就是第幾個作業(yè)。Τι的第j次執(zhí)行記為作業(yè)Τι,,Τι,的到達時間Γι,= (j-1) *Ti,截止時限di.j= (j-1) *Ti+Di,Φ?=;Τ??。廠Ρ中所有任務周期的最小公倍數(shù)記 為Γrp=LCM巧,Γ?,...,7;),將7;i稱為Γp的超周期。本模型假定實時周期任務τl滿足Φl = 0,町二Ti,且各個任務之間相互獨立。系統(tǒng)中所有實時周期任務的處理器總利用率記為
將系統(tǒng)中的非周期任務Uk化為自然數(shù))用二元組<^6,>表示,其中r,表示 Uk的到達時間,6k表示υ k的執(zhí)行時間,非周期任務的屬性在任務到達時才可知。系統(tǒng)中 已到達的非周期任務構成集合Γ\ρ= (υ 1,U 2,...},將非周期任務到達的平均間隔時間記 為Τ。。,則非周期任務負截
[0029] 本發(fā)明為一種基于預分配的空閑挪用算法(Preallocation-based Slack-Stealing Algorithm, PSSA),簡稱PSSA算法。PSSA算法基于上述建立的計算模型, 對數(shù)控系統(tǒng)中的實時周期任務和非周期任務進行混合調(diào)度,其處理過程包含離線的處理器 時間預分配和運行時的混合任務調(diào)度兩部分。
[0030] 為了保證非周期任務的執(zhí)行不影響實時周期任務的可調(diào)度性,在任務調(diào)度開始 前,采用反向邸F(backwards-邸巧算法(該算法在【背景技術】中提及的Spuri等人發(fā)表的 《Schedulin邑 aperiodic tasks in dynamic priority systems》中有相應論述),在[化再,1 內(nèi)從時刻咕開始至時刻0為止,對實時周期任務集Γρ進行反向調(diào)度。將反向調(diào)度過程中 各個實時周期作業(yè)占用的處理器時間作為其在任務集正向調(diào)度過程中預留執(zhí)行時間。 陽031] 定義1.作業(yè)τ i.j的通知時間a i.j:在廠Ρ的backwards-EDF調(diào)度結果中,作業(yè)τ U 的完成時間稱為τ。的通知時間,記為ay。任務集正向調(diào)度過程中,在ay時刻,若τ。尚 未完成,則Ti,搶占其他任務執(zhí)行。 陽〇巧定義2. Γρ的通知時間表α :將Γ P在backwards-EDF調(diào)度得到的各個實時周期 作業(yè)的通知時間按先后順序排列向量,構成通知時間表α,α