一種隊(duì)列調(diào)度方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤指一種隊(duì)列調(diào)度方法及裝置。
【背景技術(shù)】
[0002]無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng)(WSNOS,WirelessSensor Network Operating System)是無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的基本軟件環(huán)境,WSN0S中任務(wù)隊(duì)列的調(diào)度方法直接影響到無(wú)線傳感器網(wǎng)絡(luò)的傳輸性能。隨著無(wú)線傳感器應(yīng)用領(lǐng)域的不斷拓展,基于無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的任務(wù)數(shù)量和任務(wù)執(zhí)行時(shí)間明顯增加,對(duì)任務(wù)的實(shí)時(shí)性要求也大大增加。而現(xiàn)有任務(wù)隊(duì)列調(diào)度通常采用先入先出(FIFO,F(xiàn)irst Input First Output)隊(duì)列調(diào)度方法,該方法對(duì)任務(wù)隊(duì)列按序執(zhí)行,即先進(jìn)入隊(duì)列的任務(wù)先執(zhí)行,再依次執(zhí)行跟著進(jìn)入隊(duì)列的任務(wù)。
[0003]FIFO隊(duì)列調(diào)度方法對(duì)所有的任務(wù)隊(duì)列都是按照進(jìn)入的先后順序來(lái)執(zhí)行,這樣,對(duì)于實(shí)時(shí)性要求比較高的任務(wù)需要等先進(jìn)入隊(duì)列的任務(wù)執(zhí)行完成后才能執(zhí)行,因而無(wú)法保障對(duì)實(shí)時(shí)性要求比較高的任務(wù)的及時(shí)調(diào)度。
【發(fā)明內(nèi)容】
[0004]為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種隊(duì)列調(diào)度方法及裝置,能夠保障對(duì)實(shí)時(shí)性要求比較高的任務(wù)的及時(shí)調(diào)度。
[0005]第一方面,本發(fā)明實(shí)施例提供一種隊(duì)列調(diào)度方法,包括:若隊(duì)列接收的新任務(wù)滿(mǎn)足預(yù)設(shè)的準(zhǔn)入機(jī)制,則允許所述新任務(wù)進(jìn)入隊(duì)列,其中,預(yù)設(shè)的準(zhǔn)入機(jī)制根據(jù)隊(duì)列接收新任務(wù)的優(yōu)先級(jí)進(jìn)行設(shè)置;根據(jù)預(yù)先設(shè)置的任務(wù)與優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系,對(duì)允許進(jìn)入隊(duì)列的新任務(wù)進(jìn)行調(diào)度。
[0006]進(jìn)一步地,在允許所述新任務(wù)進(jìn)入隊(duì)列之前,還包括:預(yù)先設(shè)置任務(wù)與優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系,其中,所述優(yōu)先級(jí)包括可搶占優(yōu)先級(jí)和不可搶占優(yōu)先級(jí)。
[0007]進(jìn)一步地,所述新任務(wù)滿(mǎn)足預(yù)設(shè)的準(zhǔn)入機(jī)制包括:若所述新任務(wù)在所述隊(duì)列中不存在,或所述新任務(wù)為周期性新任務(wù)且新任務(wù)的執(zhí)行周期大于等于所有第一任務(wù)的執(zhí)行時(shí)間之和;其中,所述第一任務(wù)為隊(duì)列中已存在的且優(yōu)先級(jí)高于所述新任務(wù)的任務(wù)。
[0008]進(jìn)一步地,所述允許新任務(wù)進(jìn)入隊(duì)列,具體包括:所述新任務(wù)的絕對(duì)截至?xí)r限小于隊(duì)列中已存在任務(wù)的絕對(duì)截至?xí)r限,則將所述新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前。
[0009]進(jìn)一步地,所述將新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前,具體包括:若隊(duì)列中已存在的非實(shí)時(shí)任務(wù)的被插隊(duì)次數(shù)未達(dá)到預(yù)設(shè)次數(shù),則將所述新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前;若隊(duì)列中已存在的非實(shí)時(shí)任務(wù)的被插隊(duì)次數(shù)達(dá)到預(yù)設(shè)次數(shù),則將所述非實(shí)時(shí)任務(wù)的絕對(duì)截至?xí)r限置零,并在非實(shí)時(shí)任務(wù)的絕對(duì)截至?xí)r限置零之后,將所述新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前。
[0010]進(jìn)一步地,所述根據(jù)預(yù)先設(shè)置的任務(wù)與優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系,對(duì)允許進(jìn)入隊(duì)列的新任務(wù)進(jìn)行調(diào)度,具體包括:若隊(duì)列中的當(dāng)前任務(wù)正在運(yùn)行,判斷所述新任務(wù)的優(yōu)先級(jí);若新任務(wù)的優(yōu)先級(jí)為可搶占優(yōu)先級(jí),則對(duì)新任務(wù)進(jìn)行調(diào)度;若新任務(wù)的優(yōu)先級(jí)為不可搶占優(yōu)先級(jí),則不對(duì)新任務(wù)進(jìn)行調(diào)度,并繼續(xù)運(yùn)行當(dāng)前任務(wù);若隊(duì)列中的當(dāng)前任務(wù)運(yùn)行完畢,判斷隊(duì)列中任務(wù)的切換次數(shù);若所述切換次數(shù)不為0,則繼續(xù)運(yùn)行被切換的任務(wù)并將切換次數(shù)減1;若所述切換次數(shù)為0,則根據(jù)優(yōu)先級(jí)對(duì)隊(duì)列中的任務(wù)進(jìn)行調(diào)度。
[0011]進(jìn)一步地,在允許所述新任務(wù)進(jìn)入隊(duì)列之后,所述方法還包括:在所述新任務(wù)滿(mǎn)足預(yù)設(shè)的不可搶占原則時(shí),對(duì)所述新任務(wù)不進(jìn)行調(diào)度。
[0012]進(jìn)一步地,在所述新任務(wù)滿(mǎn)足預(yù)設(shè)的不可搶占原則時(shí),對(duì)所述新任務(wù)不進(jìn)行調(diào)度,具體包括:所述新任務(wù)的優(yōu)先級(jí)和正在運(yùn)行的任務(wù)相同,或者,所述新任務(wù)的優(yōu)先級(jí)高于正在運(yùn)行的任務(wù)且滿(mǎn)足公式:Ε.-θ.+Ε_< d new_Anew,則不對(duì)所述新任務(wù)調(diào)度,其中,E.表不正在運(yùn)行的任務(wù)的平均執(zhí)行時(shí)間,Ε_表示新任務(wù)的平均執(zhí)行時(shí)間,表示正在運(yùn)行的任務(wù)已經(jīng)運(yùn)行的時(shí)間,d_表示新任務(wù)的絕對(duì)截至?xí)r限,A _表示新任務(wù)的提交時(shí)間。
[0013]第二方面,本發(fā)明實(shí)施例提供一種隊(duì)列調(diào)度裝置,包括:準(zhǔn)入單元和調(diào)度單元,其中:所述準(zhǔn)入單元,用于在隊(duì)列接收的新任務(wù)滿(mǎn)足預(yù)設(shè)的準(zhǔn)入機(jī)制時(shí),允許所述新任務(wù)進(jìn)入隊(duì)列,其中,預(yù)設(shè)的準(zhǔn)入機(jī)制根據(jù)隊(duì)列接收新任務(wù)的優(yōu)先級(jí)進(jìn)行設(shè)置;所述調(diào)度單元,用于根據(jù)預(yù)先設(shè)置的任務(wù)與優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系,對(duì)所述準(zhǔn)入單元允許進(jìn)入隊(duì)列的新任務(wù)進(jìn)行調(diào)度。
[0014]進(jìn)一步地,所述準(zhǔn)入單元,具體用于:所述新任務(wù)的絕對(duì)截至?xí)r限小于隊(duì)列中已存在任務(wù)的絕對(duì)截至?xí)r限時(shí),將所述新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前。
[0015]本發(fā)明實(shí)施例提供的實(shí)現(xiàn)隊(duì)列調(diào)度的技術(shù)方案包括:在隊(duì)列接收的新任務(wù)滿(mǎn)足預(yù)設(shè)的準(zhǔn)入機(jī)制時(shí),允許新任務(wù)進(jìn)入隊(duì)列,其中,預(yù)設(shè)的準(zhǔn)入機(jī)制根據(jù)隊(duì)列接收新任務(wù)的優(yōu)先級(jí)進(jìn)行設(shè)置;根據(jù)預(yù)先設(shè)置的任務(wù)與優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系,對(duì)允許進(jìn)入隊(duì)列的新任務(wù)進(jìn)行調(diào)度,其中,優(yōu)先級(jí)表示任務(wù)對(duì)實(shí)時(shí)性要求的重要程度,根據(jù)任務(wù)對(duì)實(shí)時(shí)性要求的重要程度對(duì)任務(wù)進(jìn)行區(qū)別,使得無(wú)線傳感器網(wǎng)絡(luò)中的對(duì)實(shí)時(shí)性要求比較高的重要任務(wù)得以?xún)?yōu)先執(zhí)行,保障了對(duì)實(shí)時(shí)性要求比較高的任務(wù)隊(duì)列的及時(shí)調(diào)度。
【附圖說(shuō)明】
[0016]附圖用來(lái)提供對(duì)本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與本申請(qǐng)的實(shí)施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限制。
[0017]圖1為本發(fā)明實(shí)施例提出的一種隊(duì)列調(diào)度方法的流程圖;
[0018]圖2為本發(fā)明實(shí)施例提出的一種隊(duì)列調(diào)度裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
[0020]在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0021]圖1為本發(fā)明實(shí)施例提出的一種隊(duì)列調(diào)度方法的流程圖,該方法包括:
[0022]步驟101:若隊(duì)列接收的新任務(wù)滿(mǎn)足預(yù)設(shè)的準(zhǔn)入機(jī)制,則允許新任務(wù)進(jìn)入隊(duì)列,其中,預(yù)設(shè)的準(zhǔn)入機(jī)制根據(jù)隊(duì)列接收新任務(wù)的優(yōu)先級(jí)進(jìn)行設(shè)置;
[0023]本步驟之前還包括:預(yù)先設(shè)置任務(wù)與優(yōu)先級(jí)的對(duì)應(yīng)關(guān)系,其中,優(yōu)先級(jí)包括可搶占優(yōu)先級(jí)和不可搶占優(yōu)先級(jí)。
[0024]任務(wù)的優(yōu)先級(jí),用于表示該任務(wù)對(duì)實(shí)時(shí)性要求的重要程度,根據(jù)任務(wù)對(duì)實(shí)時(shí)性要求的重要程度對(duì)任務(wù)進(jìn)行區(qū)別,使得重要任務(wù)優(yōu)先執(zhí)行,避免了現(xiàn)有技術(shù)中根據(jù)任務(wù)到來(lái)的先后順序執(zhí)行任務(wù)所造成的重要任務(wù)調(diào)度不及時(shí)的問(wèn)題。當(dāng)然,任務(wù)的優(yōu)先級(jí)還可以進(jìn)行其他設(shè)置,本發(fā)明實(shí)施例對(duì)此不做具體的限制。
[0025]示例性地,預(yù)設(shè)的準(zhǔn)入機(jī)制包括:若新任務(wù)在隊(duì)列中不存在,或新任務(wù)為周期性新任務(wù)且新任務(wù)的執(zhí)行周期大于等于所有第一任務(wù)的執(zhí)行時(shí)間之和,則允許新任務(wù)進(jìn)入隊(duì)列,其中,第一任務(wù)為隊(duì)列中已存在的且優(yōu)先級(jí)高于新任務(wù)的任務(wù)。
[0026]其中,第一任務(wù)的執(zhí)行時(shí)間,指執(zhí)行完該第一任務(wù)所需要的時(shí)間。
[0027]需要說(shuō)明的是,新任務(wù)包括周期性新任務(wù)和非周期性新任務(wù)。若新任務(wù)為周期性新任務(wù),則新任務(wù)有執(zhí)行周期,即該新任務(wù)在執(zhí)行周期到達(dá)時(shí)將會(huì)被執(zhí)行。
[0028]在實(shí)際應(yīng)用中,判斷新任務(wù)是否為隊(duì)列中已存在的任務(wù)有很多方法,例如,通過(guò)判斷新任務(wù)的任務(wù)標(biāo)識(shí)與隊(duì)列中已存在任務(wù)的任務(wù)標(biāo)識(shí)是否一致。在判斷出新任務(wù)為隊(duì)列中已存在的任務(wù),則拒絕新任務(wù)進(jìn)入隊(duì)列,從而避免了隊(duì)列中包含重復(fù)的任務(wù)。另外,針對(duì)周期性新任務(wù),若新任務(wù)的執(zhí)行周期大于等于所有第一任務(wù)的執(zhí)行時(shí)間之和,才允許新任務(wù)進(jìn)入隊(duì)列,使得該周期性新任務(wù)只有在其執(zhí)行周期內(nèi)可以被調(diào)度時(shí)才可以進(jìn)入隊(duì)列。
[0029]進(jìn)一步地,允許新任務(wù)進(jìn)入隊(duì)列,具體包括:新任務(wù)的絕對(duì)截至?xí)r限小于隊(duì)列中已存在任務(wù)的絕對(duì)截至?xí)r限,則將新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前。
[0030]其中,絕對(duì)截至?xí)r限,為表示任務(wù)緊急程度的時(shí)間因子。任務(wù)的絕對(duì)截至?xí)r限越小,該任務(wù)在隊(duì)列中的優(yōu)先級(jí)越高;相反,任務(wù)的絕對(duì)截至?xí)r限越大,該任務(wù)在隊(duì)列中的優(yōu)先級(jí)越低。
[0031]優(yōu)選地,將新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前,具體包括:若隊(duì)列中已存在的非實(shí)時(shí)任務(wù)的被插隊(duì)次數(shù)未達(dá)到預(yù)設(shè)次數(shù),則將新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前;若隊(duì)列中已存在的非實(shí)時(shí)任務(wù)的被插隊(duì)次數(shù)達(dá)到預(yù)設(shè)次數(shù),則將非實(shí)時(shí)任務(wù)的絕對(duì)截至?xí)r限置零,并在非實(shí)時(shí)任務(wù)的絕對(duì)截至?xí)r限置零之后,將新任務(wù)進(jìn)入隊(duì)列的位置設(shè)置在隊(duì)列中絕對(duì)截至?xí)r限大于新任務(wù)的任務(wù)之前。
[0