一種多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性傳遞方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性傳遞方法。
【背景技術(shù)】
[0002] 不同任務(wù)間"數(shù)據(jù)一致性"數(shù)據(jù)是指其它任務(wù)用某一任務(wù)的數(shù)據(jù)時(shí),所用數(shù)據(jù)都是 該任務(wù)在同一個(gè)執(zhí)行周期內(nèi)產(chǎn)生的數(shù)據(jù),這樣的數(shù)據(jù)被定義為任務(wù)間具有"數(shù)據(jù)一致性"的 數(shù)據(jù)。
[0003] -個(gè)處理器內(nèi)有不同優(yōu)先等級(jí)的任務(wù),任務(wù)間有數(shù)據(jù)交換,在多優(yōu)先級(jí)任務(wù)運(yùn)行 場(chǎng)合,經(jīng)常會(huì)發(fā)生高優(yōu)先級(jí)任務(wù)打斷低優(yōu)先級(jí)任務(wù)優(yōu)先執(zhí)行的情況,當(dāng)這兩個(gè)任務(wù)間有數(shù) 據(jù)傳遞時(shí)有可能發(fā)生以下情形:
[0004] (1)假設(shè)低優(yōu)先級(jí)任務(wù)向高優(yōu)先級(jí)任務(wù)傳遞數(shù)列a[n],當(dāng)高優(yōu)先級(jí)任務(wù)打斷低優(yōu) 先級(jí)任務(wù)時(shí),數(shù)據(jù)a[0]至a[k]已經(jīng)被當(dāng)前執(zhí)行周期的低優(yōu)先級(jí)任務(wù)更新,而因?yàn)閳?zhí)行被打 斷,a[k]至a[n]的數(shù)據(jù)未被更新,也就是說(shuō)它們存儲(chǔ)的仍是上一運(yùn)行周期的數(shù)據(jù);高優(yōu)先 級(jí)任務(wù)獲得執(zhí)行權(quán)后讀取低優(yōu)先級(jí)傳遞的數(shù)列a[n],這時(shí)這個(gè)數(shù)列中,前k+1個(gè)數(shù)據(jù)是當(dāng) 前周期已更新的數(shù)據(jù),后面n-k個(gè)數(shù)據(jù)是上一個(gè)運(yùn)行周期更新的數(shù)據(jù);如果數(shù)列a[n]的數(shù) 據(jù)有關(guān)聯(lián)的意義,則我們認(rèn)為這時(shí)高優(yōu)先級(jí)任務(wù)從低優(yōu)先級(jí)任務(wù)讀取的數(shù)列a[n]不具備 數(shù)據(jù)一致性特性。
[0005] (2)同樣,假設(shè)高優(yōu)先級(jí)任務(wù)向低優(yōu)先級(jí)任務(wù)傳遞數(shù)列b[n],在低優(yōu)先級(jí)任務(wù)被 高優(yōu)先級(jí)任務(wù)打斷前,計(jì)算所用的數(shù)據(jù)是高優(yōu)先級(jí)任務(wù)前一個(gè)周期所產(chǎn)生的數(shù)據(jù);打斷后 低優(yōu)先級(jí)任務(wù)繼續(xù)執(zhí)行時(shí),所用的數(shù)據(jù)是剛執(zhí)行完成的高優(yōu)先級(jí)任務(wù)所產(chǎn)生的數(shù)據(jù);即在 同一個(gè)低優(yōu)先級(jí)任務(wù)的執(zhí)行周期內(nèi),所用的高優(yōu)先級(jí)任務(wù)傳遞的數(shù)據(jù)并不是高優(yōu)先級(jí)任務(wù) 在同一個(gè)執(zhí)行周期內(nèi)產(chǎn)生的數(shù)據(jù),這樣的數(shù)據(jù)我們認(rèn)為對(duì)低優(yōu)先級(jí)任務(wù)而言也不具備數(shù)據(jù) 一致性特性。
[0006] 以上所述的多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)傳遞的不一致性,會(huì)給對(duì)數(shù)據(jù)有嚴(yán)格關(guān)聯(lián)性要求 的處理帶來(lái)的不可預(yù)測(cè)的問(wèn)題。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的是提供一種多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性傳遞方法,保證多優(yōu)先級(jí)任 務(wù)間數(shù)據(jù)傳遞的一致性。
[0008] 為了實(shí)現(xiàn)以上目的,本發(fā)明所采用的技術(shù)方案是:一種多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致 性傳遞方法,每個(gè)任務(wù)設(shè)定數(shù)量為N的輸出緩存區(qū),每個(gè)輸出緩存區(qū)有空閑、最新數(shù)據(jù)一致 性輸出、寫入及讀取4種狀態(tài),每個(gè)任務(wù)執(zhí)行以下每個(gè)步驟的過(guò)程均不被其他任務(wù)所中斷:
[0009] (1)在每個(gè)任務(wù)起始,尋找其它任務(wù)當(dāng)前標(biāo)記為最新數(shù)據(jù)一致性輸出狀態(tài)的緩存 區(qū),置該任務(wù)的讀取標(biāo)記,當(dāng)前任務(wù)從該緩存區(qū)中讀取一致性數(shù)據(jù);
[0010] (2)當(dāng)任務(wù)讀取完數(shù)據(jù),清所被讀取緩存區(qū)的讀取標(biāo)記;
[0011] (3)在每個(gè)任務(wù)起始,尋找該任務(wù)空閑狀態(tài)的數(shù)據(jù)緩存區(qū),置為寫入狀態(tài),用于當(dāng) 前任務(wù)寫入該周期產(chǎn)生的數(shù)據(jù)一致性輸出數(shù)據(jù);
[0012] (4)當(dāng)任務(wù)完成數(shù)據(jù)一致性輸出數(shù)據(jù)的寫入工作后,標(biāo)記最新寫入的數(shù)據(jù)一致性 數(shù)據(jù)的緩存區(qū)為最新數(shù)據(jù)一致性輸出緩存區(qū),并清舊的最新數(shù)據(jù)一致性輸出標(biāo)記。
[0013] 輸出緩存區(qū)N的取值范圍為:N多Tlciw pi4c]+2,其中,Tlciw 。是指運(yùn)行優(yōu)先級(jí)比該任 務(wù)低的有數(shù)據(jù)一致性傳遞需求的任務(wù)數(shù)量。
[0014] 所述輸出緩存區(qū)的空閑狀態(tài)是指緩存區(qū)即不為最新數(shù)據(jù)一致性輸出狀態(tài),也不為 寫入或讀取狀態(tài);最新數(shù)據(jù)一致性輸出是指該緩存區(qū)存放了該任務(wù)的最新數(shù)據(jù)一致性輸出 數(shù)據(jù),可以被其它任務(wù)讀取;寫入狀態(tài)是指該緩存區(qū)為當(dāng)前任務(wù)在當(dāng)前周期要寫入數(shù)據(jù)的 緩存區(qū);所述讀取狀態(tài)是指其它任務(wù)被該任務(wù)讀取的數(shù)據(jù)緩存區(qū)。
[0015] 本發(fā)明多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性傳遞方法通過(guò)給每個(gè)任務(wù)設(shè)定一定數(shù)量的輸 出緩存區(qū),保證在最極限情況下,該任務(wù)仍然可以有一個(gè)緩存區(qū)用于寫入輸出數(shù)據(jù);每個(gè)輸 出緩存區(qū)有空閑、最新數(shù)據(jù)一致性輸出、寫入及讀取4種狀態(tài),在每個(gè)任務(wù)的起始,尋找其 它任務(wù)當(dāng)前標(biāo)記為最新數(shù)據(jù)一致性輸出狀態(tài)的緩存區(qū)并從該緩存區(qū)中讀取數(shù)據(jù);同時(shí)從該 緩存區(qū)中讀取數(shù)據(jù)用于當(dāng)前任務(wù)寫入該周期產(chǎn)生的輸出數(shù)據(jù);在執(zhí)行過(guò)程中保持其連貫 性,從而保證多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性的傳遞。
【附圖說(shuō)明】
[0016] 圖1是多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性傳遞控制方法實(shí)施例的示意圖。
【具體實(shí)施方式】
[0017] 下面結(jié)合附圖及具體的實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步介紹。
[0018] 本發(fā)明通過(guò)一種合理的任務(wù)間數(shù)據(jù)傳遞的機(jī)制實(shí)現(xiàn)多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性 的傳遞,這里的任務(wù)間數(shù)據(jù)傳遞的機(jī)制,包括內(nèi)存區(qū)的設(shè)置和內(nèi)存區(qū)的管理兩部分。
[0019]內(nèi)存區(qū)設(shè)置有如下特性:每個(gè)任務(wù)需要設(shè)置一定數(shù)量的輸出緩存區(qū),多緩存區(qū)的 設(shè)置用于保證在最極限情況下,該任務(wù)仍然可以有一個(gè)緩存區(qū)用于寫入輸出數(shù)據(jù);每個(gè)任 務(wù)輸出緩存區(qū)數(shù)量N決定于在執(zhí)行的程序中有多少個(gè)比它優(yōu)先級(jí)低的任務(wù)(T lciwimci)從這 個(gè)任務(wù)中讀取數(shù)據(jù)。每個(gè)任務(wù)的輸出緩存區(qū)數(shù)量(N)的設(shè)置原則如下:
[0020] N ^ Tlow prio+2
[0021] 其中,Tlciw 是指運(yùn)行優(yōu)先級(jí)比該任務(wù)低的有數(shù)據(jù)一致性傳遞需求的任務(wù)數(shù)量, 即N大于等于從該任務(wù)讀取數(shù)據(jù)的且優(yōu)先級(jí)比它低的任務(wù)數(shù)量再加2個(gè)緩存區(qū);
[0022] 內(nèi)存區(qū)管理有如下特性:每個(gè)輸出緩存區(qū)有空閑、最新數(shù)據(jù)一致性輸出、寫入及讀 取4種狀態(tài),各種狀態(tài)有以下具體解釋:
[0023]
[0025] 本發(fā)明的多優(yōu)先級(jí)任務(wù)間數(shù)據(jù)一致性傳遞方法,每個(gè)任務(wù)設(shè)定數(shù)量為N的輸出緩 存區(qū),每個(gè)輸出緩存區(qū)有空閑、最新數(shù)據(jù)一致性輸出、寫入及讀取4種狀態(tài),每個(gè)任務(wù)執(zhí)行 以下每個(gè)步驟的過(guò)程均不被其他任務(wù)所中斷:
[0026] (1)在每個(gè)任務(wù)起始,讀取其它任務(wù)的一致性輸出數(shù)據(jù)前,鎖定其它任務(wù)當(dāng)前標(biāo)記 為最新數(shù)據(jù)一致性輸出狀態(tài)的緩存區(qū),標(biāo)記為讀取狀態(tài),當(dāng)前任務(wù)從該緩存區(qū)中讀取一致 性數(shù)據(jù);
[0027] (2)當(dāng)任務(wù)完成對(duì)讀取緩存區(qū)的數(shù)據(jù)讀取后,釋放讀取標(biāo)記;
[0028] (3)在每個(gè)任務(wù)起始,產(chǎn)生該任務(wù)具有數(shù)據(jù)一致性的數(shù)據(jù)前,尋找該任務(wù)空閑狀態(tài) 的數(shù)據(jù)緩存區(qū),置為寫入狀態(tài),用于當(dāng)前任務(wù)寫入該周期產(chǎn)生的數(shù)據(jù)一致性輸出數(shù)據(jù);
[0029] (4)當(dāng)任務(wù)完成數(shù)據(jù)一致性輸