基于線性鏈表的實時任務可調度性測試半直接模擬方法
【專利說明】
[0001]
技術領域: 本發明涉及一種基于線性鏈表的實時任務可調度性測試半直接模擬方法。
[0002]
【背景技術】: 在實時系統設計和應用過程中,對于給定的η個周期性或者不定時發生的實時任務, 在真正調度和執行之前判定這組實時任務是否可調度,即每個任務被釋放之后是否都能在 其相對最后期限內執行完畢,這是一個十分重要的問題,對于保證實時系統安全運行具有 極為重要的意義。
[0003] 經典的優先搶占調度模型,簡稱為CP模型,其中CP即classic preemptive,CP 模型的調度方式為:每當低優先級任務在運行過程中有高優先級任務到來時,低優先級任 務將被剝奪執行權而高優先級任務開始執行,當高優先級任務執行完畢且沒有其它高優 先級任務等待執行時,該低優先級任務從被剝奪的位置處繼續執行;事務處理方式的優先 搶占調度模型,簡稱為TP模型,其中TP即transactional preemptive,例如,TP模型有 基于優先級的功能反應式編程模型,簡稱為P-FRP模型,其中P-FRP即joriori /rac reac Ke 或者中止并重新開始模型,簡稱為AR模型,其中 AR即abort-and-restart;或者軟件事務存儲器模型,簡稱為STM模型,STM即software transactional memory,STM模型包括渴望沖突檢測策略和懶惰沖突檢測策略,渴望沖突檢 測策略簡稱為ECD策略,其中ECD即eager conflict detection,懶惰沖突檢測策略簡稱 為LCD策略,其中LCD即lazy conflict detection;TP模型的調度方式為:每當低優先級 任務在運行過程中有高優先級任務到來時,低優先級任務將被剝奪執行權而高優先級任務 開始執行,該低優先級任務已執行的結果都被廢棄,當高優先級任務執行完畢且沒有其它 高優先級任務等待執行時,該低優先級任務從其最開始位置重新執行;符號串r- s表示將 變量s的值賦值給變量r;min(a,b)即取a和b中的最小值,max(a,b)即取a和b中的最 大值;mod(a,b)即a模b后的余數;lcm(a,b)即a和b的最小公倍數;任務的一次釋放稱 為該任務的一個任務實例(job)或者調用(invoke)或者任務實例(instance);【和】之間、 K和3之間、『和』之間、[和]、「和」之間分別表示一個語句體;任務實例執行中止包括執行 被尚優先級任務中斷和執行完成。
[0004] 給定調度模型為CP模型或者TP模型;在一組η個實時任務的可調度性(或可行 性)區間測試(或檢驗或檢查或檢測)這組任務的可調度性。如果該組任務是可調度的,那 么在一個時間點S之后,每隔時間長度LCM n,這組任務的調度情況就出現重復,即后續調度 過程實際上是一段在長度為LCMn的時間區間[S,S+LCMJ內的調度的重復。
[0005] 系統啟動時刻為時間0,實際測試可調度性時,由于這組任務在區間[0,S)內的調 度包含初次到達情形而往往不具有重復性,因此,傳統上將[0, S+LCMJ作為實際的可調度 性測試區間。這段可調度性測試區間長度越小,實際測試中效率越高。從普遍情況來看,可 調度性測試區間長度一般不小于LCM n。此前沒有采用線性鏈表記錄調度過程對任務集的可 調度性進行測試的方法。
[0006]
【發明內容】
: 本發明的目的是提供一種基于線性鏈表的實時任務可調度性測試半直接模擬方法,通 過使用鏈表結點表示任務(或事件)的調度執行階段,采用線性鏈表記錄測試的調度過程并 使用半直接模擬的方法來達到確定實時任務(或事件)可調度性測試的目的;適用于實時任 務或事件優先級固定的情形。
[0007] 上述的目的通過以下的技術方案實現: 一種基于線性鏈表的實時任務可調度性測試半直接模擬方法,該方法包括:對每個i, 1瘦i玄n,記任務τ i的不早于調度穩定點S釋放的第一個任務實例的釋放時間為新的釋 放偏移,還用Φi表示,根據給定的調度模型,采用線性鏈表記錄調度模擬和測試過程,首先 對任務τ τ 2, . . .,τ n i,在時間范圍Φ_(η υ到Φ _(n n+ LCMn i內按優先級從高到低順序 模擬每個任務T1的調度執行,然后在當前鏈表上對任務τ n進行測試。
[0008] 所述的基于線性鏈表的實時任務可調度性測試半直接模擬方法,所述的采用線 性鏈表記錄調度模擬和測試過程,首先對任務τ τ 2, ...,τ n i,在時間范圍到 Φ_(η1)+ LCMnl內按優先級從高到低順序模擬每個任務τ i的調度執行,然后在當前鏈表 上對任務τ n進行測試是指,采用一個線性鏈表記錄任務的調度模擬執行和測試過程,任務 實例開始執行時間點記錄到鏈表結點的start字段,任務實例執行中止時間點記錄到鏈表 結點的end字段,每個鏈表結點表示從該結點start字段值給出的時間點到該結點end字 段值給出的時間點之間一個或多個任務實例的連續調度執行;Φ_ (1)- Φ pL%- (:1;對 每個 i,2^i<n,Φ_ ⑴一π?η(Φ 咖(11),O1LLRT廣 C1;MAXinter- Φ_(η1)+ LCMnl;給 標志變量flag賦一個初值;【首先在時間范圍Φ η到Φ n+ LCMn i內模擬任務τ 1 的從第1個到第LCMn VT1個任務實例的執行,即建立LCMn /T1個鏈表結點,對每個j從小 到大,!蹵j逄LCMn /T1, K第j個鏈表結點的start字段賦值為任務實例τ u的釋放時間 hj,第j個鏈表結點的end字段賦值為r 然后對任務τ 2,τ3,...,τη1,在時間范 圍Φ_(η ?到Φ _(n 1)+LCMn i內按優先級從高到低順序模擬每個任務τ i的從第1個到第 LCMn /!^個任務實例的調度執行,即,K對每個i,2_i蹙n-1,每個j,l遽LCMn /T1, j從小到大依次調用執行模擬單個任務實例函數Fl對任務τ i的第j個任務實例τ u進 行模擬;3;】;i-n,調用測試模擬單個任務函數F2對任務τ i進行測試;給出任務集是 可調度的信息。
[0009] 所述的基于線性鏈表的實時任務可調度性測試半直接模擬方法,所述的執行模擬 單個任務實例函數Fl對任務τ i的第j個任務實例τ u進行模擬是指,【根據r u在鏈表 中通過與結點中的start字段值及end字段值比較查找并從當前作業j在鏈表中的相對位 置開始,按CP模型調度時將運行時間C 1對應為1個或連續多個任務τ i的空閑區間鏈表結 點,這些結點表示的區間長度之和等于C1;按TP模型調度時將運行時間C i對應為任務τ i 的一個允許區間結點PINode,結點PINode表示的區間長度等于C i,且在該任務實例釋放時 間到結點PINode之間的全部任務τ i的極大空閑區間都合并到其相鄰區間;按時間次序 依次鏈入鏈表中的相應位置,鏈入鏈表的同時合并調度執行區間時間點邊界重合的鏈表結 點,在模擬過程中無法在鏈表上完成運行時間(^的對應時修改標志變量flag值不同于其 初值;在模擬完成后記錄任務τ i當前的最大響應時間LRT 1;如果標志變量flag值不同于 其初值或者LRT1M1,則返回不可調度信息并中止對該任務集的可調度性測試;】。
[0010] 所述的基于線性鏈表的實時任務可調度性測試半直接模擬方法,所述的測試模擬 單個任務函數F2對任務τ i進行測試是指,【按TP模型調度時:〖依次從每個任務實例的釋 放時間點開始至多經歷時間長度LCM1 i,確定是否有任務τ i的允許區間,如果沒有,則返回 不可調度信息并中止對該任務集的可調度性測試;每個任務實例模擬完成后記錄任務τ i 當前的最大響應時間LRT1;如果LRT 返回不可調度信息并中止對該任務集的可調度 性測試;3 ; 按CP模型調度時I從時間點Φ _(1)開始到時間點Φ _(1)+^^,依次對任務τ i的每 個任務實例確定是否有區間長度之和大于等于(;的1個或連續多個極大空閑區間,如果沒 有,則返回不可調度信息并中止對該任務集的可調度性測試;每個任務實例模擬完成后記 錄任務τ i當前的最大響應時間LRT 1;如果LRT AD1,則返回不可調度信息并中止對該任務 集的可調度性測試;〗;】。
[0011] 所述的基于線性鏈表的實時任務可調度性測試半直接模擬方法,所述的TP模型 的任務^的允許區間是指:任務τ 4勺一個空閑區間EI是指,對于任務τ τ2,...,τη1 的調度結果中一個沒有被占用的連續的時間范圍區間[h,t2),t2>ti,在該區間內沒有任務 集{ τ τ 2, . . .,τ n J中的任務釋放,并且在時刻t i及之前所有已釋放的任務集{ τ τ 2 ,...,τη1}中的任務都已執行完畢; 任務^的一個空閑區間[tl,t2)稱為一個任務τ 極大空閑區間maxEI是指,時刻 L為任務τ ^勺釋放時間或者任務集{τ τ2,...,τη1}中的任務結束時間,并且從時刻t2 開始有任務集{ τ i,τ 2, . . .,τ n J中的任務釋放或者七2等于Φ _(1 ^kXLCM1 pkg: 1;對 于TP模型,如果一個任務τ i的空閑區間[tl,t2)或者極大空閑區間[tpt2)滿足 C1,則區間[ti,t2)稱為任務τ ^勺一個允許區間PI。
[0012] 所述的基于線性鏈表的實時任務可調度性測試半直接模擬方法,所述的給出該任 務集可調度或者不可調度信息,在給出任務集是可調度的信息時,給出Hiax 1 s i霞n (LRT1),表 示全部任務τ i在當前優先級設置和任務釋放偏移時的最大響應時間。
[0013] 所述的基于線性鏈表的實時任務可調度性測試半直接模擬方法,所述的合并調度 執行區間時間點邊界重合的鏈表結點是指,如果在鏈表中會產生或者有兩個相鄰的結點 Nodel和Node2使得Nodel的end字段值等于Node2的start字段值,則將這兩個結點合并 為一個結點Node3鏈入鏈表中Nodel的位置,代替Nodel和Node2這兩個結點,其中Node3 的start字段值賦值為Nodel的start字段值,Node3的end字段值賦值為Node2的end字 段值,Node3的next字段值賦值為Node2的next字段值。
[0014] 有益效果: 1.本發明的方法不同于已有的實時任務(或事件)可調度性測試方法,本發明的方法通 過用