基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法
【專利說明】
[0001]
技術(shù)領(lǐng)域: 本發(fā)明設(shè)及一種基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法。
[000引【背景技術(shù)】: 在實(shí)時(shí)系統(tǒng)設(shè)計(jì)和應(yīng)用過程中,對(duì)于給定的n個(gè)周期性或者不定時(shí)發(fā)生的實(shí)時(shí)任務(wù), 在真正調(diào)度和執(zhí)行之前判定運(yùn)組實(shí)時(shí)任務(wù)是否可調(diào)度,即每個(gè)任務(wù)被釋放之后是否都能在 其相對(duì)最后期限內(nèi)執(zhí)行完畢,運(yùn)是一個(gè)十分重要的問題,對(duì)于保證實(shí)時(shí)系統(tǒng)安全運(yùn)行具有 極為重要的意義。
[0003] 經(jīng)典的優(yōu)先搶占調(diào)度模型,簡(jiǎn)稱為CP模型,其中CP即classicpreemptive,CP 模型的調(diào)度方式為:每當(dāng)?shù)蛢?yōu)先級(jí)任務(wù)在運(yùn)行過程中有高優(yōu)先級(jí)任務(wù)到來時(shí),低優(yōu)先級(jí)任 務(wù)將被剝奪執(zhí)行權(quán)而高優(yōu)先級(jí)任務(wù)開始執(zhí)行,當(dāng)高優(yōu)先級(jí)任務(wù)執(zhí)行完畢且沒有其它高優(yōu) 先級(jí)任務(wù)等待執(zhí)行時(shí),該低優(yōu)先級(jí)任務(wù)從被剝奪的位置處繼續(xù)執(zhí)行;事務(wù)處理方式的優(yōu)先 搶占調(diào)度模型,簡(jiǎn)稱為TP模型,其中TP即transactionalpreemptive,例如,TP模型有 基于優(yōu)先級(jí)的功能反應(yīng)式編程模型,簡(jiǎn)稱為?斗3?模型,其中?斗3?即/priori冰-如56^/ /W7Creac或者中止并重新開始模型,簡(jiǎn)稱為AR模型,其中 AR即油ort-and-restart;或者軟件事務(wù)存儲(chǔ)器模型,簡(jiǎn)稱為STM模型,STM即software transactionalmemo巧,STM模型包括渴望沖突檢測(cè)策略和懶惰沖突檢測(cè)策略,渴望沖突檢 測(cè)策略簡(jiǎn)稱為ECD策略,其中ECD即eagerconflictdetection,懶惰沖突檢測(cè)策略簡(jiǎn)稱 為L(zhǎng)CD策略,其中LCD即la巧conflictdetection;TP模型的調(diào)度方式為:每當(dāng)?shù)蛢?yōu)先級(jí) 任務(wù)在運(yùn)行過程中有高優(yōu)先級(jí)任務(wù)到來時(shí),低優(yōu)先級(jí)任務(wù)將被剝奪執(zhí)行權(quán)而高優(yōu)先級(jí)任務(wù) 開始執(zhí)行,該低優(yōu)先級(jí)任務(wù)已執(zhí)行的結(jié)果都被廢棄,當(dāng)高優(yōu)先級(jí)任務(wù)執(zhí)行完畢且沒有其它 高優(yōu)先級(jí)任務(wù)等待執(zhí)行時(shí),該低優(yōu)先級(jí)任務(wù)從其最開始位置重新執(zhí)行;符號(hào)串3表示將 變量S的值賦值給變量r;min(a,b)即取a和b中的最小值,max(a,b)即取a和b中的最 大值;mod(a,b)即a模b后的余數(shù);lcm(a,b)即a和b的最小公倍數(shù);任務(wù)的一次釋放稱 為該任務(wù)的一個(gè)任務(wù)實(shí)例(job)或者調(diào)用(invoke)或者任務(wù)實(shí)例(instance);【和】之間、 K和3之間、『和j之間、巧日]、「和」之間分別表示一個(gè)語句體;任務(wù)實(shí)例執(zhí)行中止包括執(zhí)行 被高優(yōu)先級(jí)任務(wù)中斷和執(zhí)行完成。
[0004] 給定調(diào)度模型為CP模型或者TP模型;在一組n個(gè)實(shí)時(shí)任務(wù)的可調(diào)度性(或可行 性)區(qū)間測(cè)試(或檢驗(yàn)或檢查或檢測(cè))運(yùn)組任務(wù)的可調(diào)度性。如果該組任務(wù)是可調(diào)度的,那 么在一個(gè)時(shí)間點(diǎn)S之后,每隔時(shí)間長(zhǎng)度LCM。,運(yùn)組任務(wù)的調(diào)度情況就出現(xiàn)重復(fù),即后續(xù)調(diào)度 過程實(shí)際上是一段在長(zhǎng)度為L(zhǎng)CM。的時(shí)間區(qū)間[S,S+LCM。)內(nèi)的調(diào)度的重復(fù)。
[0005] 系統(tǒng)啟動(dòng)時(shí)刻為時(shí)間0,實(shí)際測(cè)試可調(diào)度性時(shí),由于運(yùn)組任務(wù)在區(qū)間[0,巧內(nèi)的調(diào) 度包含初次到達(dá)情形而往往不具有重復(fù)性,因此,傳統(tǒng)上將[0,S+LCM。)作為實(shí)際的可調(diào)度 性測(cè)試區(qū)間。運(yùn)段可調(diào)度性測(cè)試區(qū)間長(zhǎng)度越小,實(shí)際測(cè)試中效率越高。從普遍情況來看,可 調(diào)度性測(cè)試區(qū)間長(zhǎng)度一般不小于LCM。。此前沒有采用線性鏈表記錄調(diào)度過程對(duì)任務(wù)集的可 調(diào)度性進(jìn)行測(cè)試的方法。
[000引
【發(fā)明內(nèi)容】
: 本發(fā)明的目的是提供一種基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,通過 使用鏈表結(jié)點(diǎn)表示任務(wù)(或事件)的調(diào)度執(zhí)行階段,采用線性鏈表記錄測(cè)試的調(diào)度過程的方 法來達(dá)到確定實(shí)時(shí)任務(wù)(或事件)可調(diào)度性測(cè)試的目的;適用于實(shí)時(shí)任務(wù)或事件優(yōu)先級(jí)固定 的情形。
[0007] 上述的目的通過W下的技術(shù)方案實(shí)現(xiàn): 一種基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,該方法包括:對(duì)每個(gè)i,1i簽〇,^任務(wù)T1自勺不早于i周度穩(wěn)定點(diǎn)S釋放自勺第一個(gè)任務(wù)實(shí)傷J自勺釋放時(shí)間為新的 釋放偏移,還用〇 1表示,根據(jù)給定的調(diào)度模型,采用線性鏈表記錄調(diào)度模擬和測(cè)試過程,對(duì) 任務(wù)T1從時(shí)間點(diǎn)01開始模擬第一個(gè)任務(wù)實(shí)例的調(diào)度執(zhí)行;然后對(duì)每個(gè)i從小到大,2 i茲n-1,先將當(dāng)前鏈表擴(kuò)展成到LCMi內(nèi)的調(diào)度結(jié)果,再對(duì)任務(wù)X在時(shí)間 范圍到LCMi內(nèi)模擬每個(gè)任務(wù)X1的調(diào)度執(zhí)行;最后在當(dāng)前鏈表上對(duì)任務(wù)Xn 進(jìn)行測(cè)試。
[0008] 所述的基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,所述的采用線性鏈 表記錄調(diào)度模擬和測(cè)試過程,對(duì)任務(wù)Ti從時(shí)間點(diǎn)01開始模擬第一個(gè)任務(wù)實(shí)例的調(diào)度執(zhí) 行;然后對(duì)每個(gè)i從小到大,2沒i<n-l,先將當(dāng)前鏈表擴(kuò)展成〇min("到巫minW+LCMi內(nèi) 的調(diào)度結(jié)果,再對(duì)任務(wù)在時(shí)間范圍到〇mmW+LCMi內(nèi)模擬每個(gè)任務(wù)X1的調(diào)度 執(zhí)行;最后在當(dāng)前鏈表上對(duì)任務(wù)T。進(jìn)行測(cè)試是指,采用一個(gè)線性鏈表記錄任務(wù)的調(diào)度模擬 執(zhí)行和測(cè)試過程,任務(wù)實(shí)例開始執(zhí)行時(shí)間點(diǎn)記錄到鏈表結(jié)點(diǎn)的Start字段,任務(wù)實(shí)例執(zhí)行 中止時(shí)間點(diǎn)記錄到鏈表結(jié)點(diǎn)的end字段,每個(gè)鏈表結(jié)點(diǎn)表示從該結(jié)點(diǎn)start字段值給出的 時(shí)間點(diǎn)到該結(jié)點(diǎn)end字段值給出的時(shí)間點(diǎn)之間一個(gè)或多個(gè)任務(wù)實(shí)例的連續(xù)調(diào)度執(zhí)行;對(duì)每 個(gè)1,1in,取任務(wù)T1的不早于S釋放的第一個(gè)任務(wù)實(shí)例的釋放時(shí)間為新的釋放偏 移,還用。康示,〇m"(i)和。1,LRTi-Ci;對(duì)每個(gè)i,2簽i簽n,(。和min(〇 。, 〇1),1^1^(:1;給標(biāo)志變量巧曰旨賦一個(gè)初值;首先模擬執(zhí)行任務(wù)T1的第一個(gè)任務(wù)實(shí)例,即 增加一個(gè)鏈表結(jié)點(diǎn),賦值給結(jié)點(diǎn)的start字段,C1賦值給結(jié)點(diǎn)的end字段,結(jié)點(diǎn)的next 字段賦值為NU化或空;【對(duì)任務(wù)X2,T3,...,1。1執(zhí)行W下操作:依優(yōu)先級(jí)從高到低,對(duì) 每個(gè)i,2簽i《n-l,K(壹)擴(kuò)展鏈表,即將任務(wù)X1,12,...,Tii從時(shí)間起點(diǎn) 到〇mm(i-"+LCMi1的鏈表調(diào)度結(jié)果擴(kuò)展到0 即,W從時(shí)間范圍 +LCM11的調(diào)度結(jié)果的當(dāng)前鏈表的第一個(gè)結(jié)點(diǎn)到最后一個(gè)結(jié)點(diǎn)為一個(gè)整體塊block共拷貝LCMi/LCMi_i-1次并依次鏈入鏈表中,第k次拷貝時(shí)將新塊所有結(jié)點(diǎn)的Start 字段和end字段分別加上kXLCM1_1,1您k簽LCM1/LCM1_1- 1;將min(擴(kuò)展后的鏈表最后 一個(gè)結(jié)點(diǎn)的end字段值,〇mmw+LCMi)賦值給擴(kuò)展后的鏈表最后一個(gè)結(jié)點(diǎn)的end字段;(戴) 令MAXinter-巫min(i)+LCMi;對(duì)每個(gè)j,1沒j簽LCMi/Ti,從小到大依次調(diào)用執(zhí)行模擬單個(gè)任 務(wù)實(shí)例函數(shù)。1對(duì)任務(wù)11的第^'個(gè)任務(wù)實(shí)例I1,,進(jìn)行模擬;3;】;1^11,調(diào)用測(cè)試模擬 單個(gè)任務(wù)函數(shù)F2對(duì)任務(wù)X1進(jìn)行測(cè)試;給出任務(wù)集是可調(diào)度的信息。 所述的基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,所述的執(zhí)行模擬單個(gè)任 務(wù)實(shí)例函數(shù)F1對(duì)任務(wù)X1的第j個(gè)任務(wù)實(shí)例X1,,進(jìn)行模擬是指,【根據(jù)ri, ,在鏈表中通過 與結(jié)點(diǎn)中的start字段值及end字段值比較查找并從當(dāng)前作業(yè)j在鏈表中的相對(duì)位置開 始,按CP模型調(diào)度時(shí)將運(yùn)行時(shí)間Ci對(duì)應(yīng)為1個(gè)或連續(xù)多個(gè)任務(wù)T1的空閑區(qū)間鏈表結(jié)點(diǎn), 運(yùn)些結(jié)點(diǎn)表示的區(qū)間長(zhǎng)度之和等于按TP模型調(diào)度時(shí)將運(yùn)行時(shí)間C1對(duì)應(yīng)為任務(wù)X1的一 個(gè)允許區(qū)間結(jié)點(diǎn)PINode,結(jié)點(diǎn)PINode表示的區(qū)間長(zhǎng)度等于C1,且在該任務(wù)實(shí)例釋放時(shí)間到 結(jié)點(diǎn)PINode之間的全部任務(wù)I1的極大空閑區(qū)間都合并到其相鄰區(qū)間;按時(shí)間次序依次鏈 入鏈表中的相應(yīng)位置,鏈入鏈表的同時(shí)合并調(diào)度執(zhí)行區(qū)間時(shí)間點(diǎn)邊界重合的鏈表結(jié)點(diǎn),在 模擬過程中無法在鏈表上完成運(yùn)行時(shí)間。的對(duì)應(yīng)時(shí)修改標(biāo)志變量flag值不同于其初值, 在模擬完成后記錄任務(wù)T1當(dāng)前的最大響應(yīng)時(shí)間LRT1;如果標(biāo)志變量flag值不同于其初值 或者LRTi〉Di,則返回不可調(diào)度信息并中止對(duì)該任務(wù)集的可調(diào)度性測(cè)試;】。
[0009] 所述的基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,所述的測(cè)試模擬單 個(gè)任務(wù)函數(shù)F2對(duì)任務(wù)X1進(jìn)行測(cè)試是指,【按TP模型調(diào)度時(shí):K依次從每個(gè)任務(wù)實(shí)例的釋放 時(shí)間點(diǎn)開始至多經(jīng)歷時(shí)間長(zhǎng)度LCMi1,確定是否有任務(wù)T1的允許區(qū)間,如果沒有,則返回不 可調(diào)度信息并中止對(duì)該任務(wù)集的可調(diào)度性測(cè)試;每個(gè)任務(wù)實(shí)例模擬完成后記錄任務(wù)T1當(dāng) 前的最大響應(yīng)時(shí)間LRTi;如果LRT1〉〇1,則返回不可調(diào)度信息并中止對(duì)該任務(wù)集的可調(diào)度性 測(cè)試;3 ; 按CP模型調(diào)度時(shí):K從時(shí)間點(diǎn)〇 開始到時(shí)間點(diǎn)巫min("+LCMi,依次對(duì)任務(wù)X1的每 個(gè)任務(wù)實(shí)例確定是否有區(qū)間長(zhǎng)度之和大于等于Ci的1個(gè)或連續(xù)多個(gè)極大空閑區(qū)間,如果沒 有,則返回不可調(diào)度信息并中止對(duì)該任務(wù)集的可調(diào)度性測(cè)試;每個(gè)任務(wù)實(shí)例模擬完成后記 錄任務(wù)T1當(dāng)前的最大響應(yīng)時(shí)間LRT1;如果LRT1〉〇1,則返回不可調(diào)度信息并中止對(duì)該任務(wù) 集的可調(diào)度性測(cè)試;3 ;】。
[0010] 所述的基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,所述的TP模型的 任務(wù)的允許區(qū)間是指:任務(wù)T1的一個(gè)空閑區(qū)間EI是指,對(duì)于任務(wù)X1,12,...,1。1的 調(diào)度結(jié)果中一個(gè)沒有被占用的連續(xù)的時(shí)間范圍區(qū)間[ti,t2),t2〉ti,在該區(qū)間內(nèi)沒有任務(wù)集 {X1,X2, . . .,T。J中的任務(wù)釋放,并且在時(shí)刻t1及之前所有已釋放的任務(wù)集{X1,X2,.. .,1。1}中的任務(wù)都已執(zhí)行完畢; 任務(wù)的一個(gè)空閑區(qū)間[ti,t2)稱為一個(gè)任務(wù)X1的極大空閑區(qū)間maxEI是指,時(shí)刻ti為任務(wù)X1的釋放時(shí)間或者任務(wù)集(X1,12,...,中的任務(wù)結(jié)束時(shí)間,并且從時(shí)刻t2 開始有任務(wù)集(Ti,l2,...,中的任務(wù)釋放或者t2等于0"Ji"+kXLCMii,kgl^ 于TP模型,如果一個(gè)任務(wù)I1的空閑區(qū)間[ti,t2)或者極大空閑區(qū)間[ti,t2)滿足t2-ti會(huì) Ci,則區(qū)間[ti,t2)稱為任務(wù)X1的一個(gè)允許區(qū)間PI。
[0011] 所述的基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,所述的給出該任務(wù) 集可調(diào)度或者不可調(diào)度信息,在給出任務(wù)集是可調(diào)度的信息時(shí),給出maxi《1簽。(LRTi),表示 全部任務(wù)T1在當(dāng)前優(yōu)先級(jí)設(shè)置和任務(wù)釋放偏移時(shí)的最大響應(yīng)時(shí)間。
[0012] 所述的基于線性鏈表的實(shí)時(shí)任務(wù)可調(diào)度性測(cè)試拷貝模擬方法,所述的合并調(diào)度 執(zhí)行區(qū)間時(shí)間點(diǎn)邊界重合的鏈表結(jié)點(diǎn)是指,如果在鏈表中會(huì)產(chǎn)生或者有兩個(gè)相鄰的結(jié)點(diǎn) Node巧日Node2使得Nodel的end字段值等于Node2的start字段值,則將運(yùn)兩個(gè)結(jié)點(diǎn)合并 為一個(gè)結(jié)點(diǎn)Node3鏈入鏈表中Nodel的位置,代替Node巧日Node2運(yùn)兩個(gè)結(jié)點(diǎn),其中Nodes 的