專利名稱:一種實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及任務(wù)調(diào)度,特別是涉及一種實(shí)時(shí)系統(tǒng)中的任務(wù)調(diào)度方法。
背景技術(shù):
實(shí)時(shí)系統(tǒng)是隨著計(jì)算機(jī)應(yīng)用于實(shí)時(shí)控制和實(shí)時(shí)信息處理領(lǐng)域中而發(fā)展起來的,它要求計(jì)算機(jī)對于外來信息能以足夠快的速度進(jìn)行處理,并在被控制對象允許的時(shí)間范圍內(nèi)做出快速響應(yīng),其響應(yīng)時(shí)間要求在秒級、毫秒級甚至微秒級或更小。實(shí)時(shí)系統(tǒng)的主要特征之一是響應(yīng)的即時(shí)性,所謂響應(yīng)的即時(shí)性是指要在時(shí)間約束之內(nèi)完成運(yùn)算。其中,時(shí)間約束是指截止時(shí)間或稱時(shí)限,是實(shí)時(shí)系統(tǒng)給出處理結(jié)果的最遲可以接受的時(shí)間。
在實(shí)時(shí)系統(tǒng)中,任務(wù)調(diào)度方法是直接影響實(shí)時(shí)系統(tǒng)響應(yīng)即時(shí)性的關(guān)鍵因素,因而對任務(wù)調(diào)度方法的研究具有十分重要的意義。目前,實(shí)時(shí)系統(tǒng)中使用最普遍的是最早時(shí)限優(yōu)先算法(EDF,Earliest Deadline First),EDF算法是廣泛使用的最具代表性的一種實(shí)時(shí)調(diào)度算法。
具體來說,EDF調(diào)度的基本工作原理是優(yōu)先處理最緊迫任務(wù),每當(dāng)有資源空閑下來時(shí),調(diào)度程序就選擇具有最早時(shí)限的任務(wù),并賦給所選任務(wù)所需的資源,使所選任務(wù)獲得運(yùn)行權(quán)。EDF調(diào)度已被證明對基于時(shí)限標(biāo)準(zhǔn)的單資源分配來說是最優(yōu)的,但是,針對多個(gè)相同資源的分配問題,EDF調(diào)度卻無法實(shí)現(xiàn)整體最優(yōu)化。例如,一個(gè)多CPU多任務(wù)調(diào)度系統(tǒng),各CPU的主頻不同,各任務(wù)的運(yùn)算量不同,如果采用EDF調(diào)度算法,則很有可能為具有最早時(shí)限但運(yùn)算量大的任務(wù)分配一個(gè)最先空閑下來的低主頻CPU;而下一個(gè)擁有最早時(shí)限的任務(wù),盡管運(yùn)算量小,卻被分配一個(gè)高主頻CPU。因此,EDF調(diào)度并不能實(shí)現(xiàn)多資源多任務(wù)實(shí)時(shí)系統(tǒng)的最優(yōu)調(diào)度。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度方法,能實(shí)現(xiàn)對多資源多任務(wù)的最優(yōu)調(diào)度,提高資源利用率和時(shí)限內(nèi)到達(dá)任務(wù)比例。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 一種實(shí)時(shí)系統(tǒng)中的任務(wù)調(diào)度方法,包括 A、根據(jù)時(shí)限和運(yùn)算量對待調(diào)度任務(wù)進(jìn)行順序排列; B、有空閑資源時(shí),按排列順序?yàn)橐粋€(gè)或一個(gè)以上待調(diào)度任務(wù)分配資源,其中,為一個(gè)以上待調(diào)度任務(wù)分配資源時(shí),所分配資源的多個(gè)任務(wù)間最大時(shí)延最小。
其中,步驟A中,先根據(jù)待調(diào)度任務(wù)的時(shí)限先后,將時(shí)限早的任務(wù)排在任務(wù)調(diào)度隊(duì)列前邊;對存在的多個(gè)時(shí)限相同的任務(wù),再按任務(wù)運(yùn)算量大小,將運(yùn)算量大的任務(wù)排在任務(wù)調(diào)度隊(duì)列前邊;對多個(gè)時(shí)限和運(yùn)算量均相同的任務(wù),將所述任務(wù)隨機(jī)排列。
上述方案中,步驟B所述為待調(diào)度任務(wù)分配資源具體包括 B1、初始化任務(wù)調(diào)度隊(duì)列; B2、確定當(dāng)前要調(diào)度的一個(gè)或一個(gè)以上任務(wù); B3、為步驟B2所確定的當(dāng)前要調(diào)度任務(wù)分配資源,且所分配資源的多個(gè)任務(wù)間滿足
其中,Uk為當(dāng)前調(diào)度的任務(wù),
為確定要分配的資源; B4、根據(jù)當(dāng)前資源分配情況及資源恢復(fù)空閑情況,更新空閑資源集合; B5、根據(jù)當(dāng)前的任務(wù)調(diào)度情況,更新任務(wù)調(diào)度隊(duì)列; B6、判斷是否調(diào)度完所有任務(wù),如果調(diào)度完,則結(jié)束當(dāng)前任務(wù)調(diào)度流程;如果未調(diào)度完,則返回步驟B2。
其中,所述每個(gè)任務(wù)調(diào)度隊(duì)列與每個(gè)可分配資源一一對應(yīng)。
其中,步驟B4中所述更新空閑資源集合具體為從空閑資源集合中刪除當(dāng)前被占用的資源,并將當(dāng)前恢復(fù)空閑的資源加入空閑資源集合中。步驟B5所述更新任務(wù)調(diào)度隊(duì)列為將當(dāng)前所分配的任務(wù)Uk添加到任務(wù)調(diào)度隊(duì)列中。步驟B6中所述判斷是否調(diào)度完所有任務(wù)為判斷未調(diào)度任務(wù)隊(duì)列是否為空,如果為空,則調(diào)度完所有任務(wù);否則,未調(diào)度完。
本發(fā)明所提供的實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度方法,將所有需調(diào)度任務(wù)按時(shí)限先后順序排列,同時(shí),對多個(gè)時(shí)限相同的任務(wù),按任務(wù)運(yùn)算量大小排列,運(yùn)算量大的排在任務(wù)調(diào)度隊(duì)列前面;這樣,在有空閑資源時(shí),按任務(wù)調(diào)度隊(duì)列的排序分配資源,且在對多個(gè)任務(wù)進(jìn)行資源分配時(shí)采用聚類時(shí)延最小策略,如此,不僅能保證多個(gè)同時(shí)調(diào)度的任務(wù)的最大時(shí)延最小化;而且打破了單資源分配最優(yōu)的局限性,進(jìn)而提高了資源利用率和時(shí)限內(nèi)到達(dá)任務(wù)比例等性能指標(biāo),為實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度提供了一種可實(shí)現(xiàn)整體最優(yōu)化的方法。
具體實(shí)施例方式 本發(fā)明的任務(wù)調(diào)度方法首先對實(shí)時(shí)系統(tǒng)中的任務(wù)進(jìn)行排隊(duì),之后再對經(jīng)過排隊(duì)的任務(wù)進(jìn)行調(diào)度。具體的,所述對實(shí)時(shí)系統(tǒng)中的任務(wù)進(jìn)行排隊(duì)一般采用如下策略根據(jù)待調(diào)度任務(wù)的時(shí)限先后,時(shí)限早的任務(wù)排在任務(wù)調(diào)度隊(duì)列前邊;若存在多個(gè)任務(wù)時(shí)限相同,則按照任務(wù)運(yùn)算量大小,運(yùn)算量大的任務(wù)排在任務(wù)調(diào)度隊(duì)列前邊;若多個(gè)任務(wù)的時(shí)限和運(yùn)算量均相同,則將這些任務(wù)隨機(jī)排列。
本發(fā)明中,用Ui表示某一個(gè)任務(wù),其中j為任務(wù)號;M表示全部任務(wù)集合,或稱全部任務(wù)隊(duì)列;M0表示尚未調(diào)度的任務(wù)集合,又稱尚未調(diào)度任務(wù)隊(duì)列;初始狀態(tài)下全部任務(wù)均處于待調(diào)度狀態(tài),即M0=M=(U1,U2,…Ui)。并且,用Ci表示某一資源,其中i為資源號;N表示全部資源集合;N0表示某時(shí)刻空閑資源集合;初始狀態(tài)下全部資源處于空閑狀態(tài),即N0=N={Ci| 1≤i≤n}。那么,本發(fā)明的任務(wù)調(diào)度方法具體包括以下步驟 步驟1初始化任務(wù)調(diào)度隊(duì)列; 每個(gè)資源Ci在實(shí)時(shí)系統(tǒng)的調(diào)度過程中,可能會(huì)先后分配給多個(gè)任務(wù),這些任務(wù)形成一個(gè)任務(wù)調(diào)度隊(duì)列,又稱任務(wù)調(diào)度集合,用Qi表示,Qi與資源Ci一一對應(yīng)。初始狀態(tài)下,所有資源均未分配任何一個(gè)任務(wù),處于空閑狀態(tài),因此與資源對應(yīng)的任何一個(gè)任務(wù)調(diào)度隊(duì)列均初始化為空集Φ,即Qi-Φ,(1≤i≤n)。
步驟2確定當(dāng)前要調(diào)度的一個(gè)或一個(gè)以上任務(wù); 當(dāng)M0≠Φ且N0≠Φ時(shí),分別計(jì)算M0和N0的大小,即M0和N0分別所含元素的多少,其中,較小的用n′表示,即n′=min(|M0|,|N0|),則尚未調(diào)度任務(wù)隊(duì)列M0=(Uj,…Um),1≤j≤m中,前n′個(gè)任務(wù)Uj,…,Uj+n′-1被確定為當(dāng)前被調(diào)度的任務(wù)。于是,尚未調(diào)度任務(wù)隊(duì)列變?yōu)镸0=(Uj+n′,…Um),n′<j+n′≤m,或者M(jìn)0為空。
步驟3為確定的當(dāng)前要調(diào)度任務(wù)Uj,…Uj+n-1分配資源,且采用聚類時(shí)延最小策略進(jìn)行資源分配; 所謂聚類時(shí)延最小策略是指所分配資源的多個(gè)任務(wù)間最大時(shí)延最小,具體來說就是,為每個(gè)Uk(j≤k≤j+n′-1)分別確定一個(gè)資源目標(biāo)是使得,n′個(gè)當(dāng)前調(diào)度任務(wù)Uj,…,Uj+n′-1的最大時(shí)延最小,即
其中,Uk就是當(dāng)前調(diào)度的任務(wù),
就是確定要分配的資源。
在任意時(shí)刻,一個(gè)實(shí)時(shí)系統(tǒng)擁有空閑資源的數(shù)目可以有三種情況沒有空閑資源、有一個(gè)空閑資源、有多個(gè)空閑資源。相應(yīng)的資源分配原則是 第一種情況,沒有空閑資源時(shí),不為任務(wù)分配資源,不進(jìn)行調(diào)度; 第二種情況,有一個(gè)空閑資源時(shí),如果任務(wù)調(diào)度隊(duì)列中沒有任務(wù),則不進(jìn)行調(diào)度;如果任務(wù)調(diào)度隊(duì)列中有一個(gè)或一個(gè)以上任務(wù),則不進(jìn)行計(jì)算,直接為任務(wù)調(diào)度隊(duì)列中的第一個(gè)任務(wù)分配資源; 第三種情況,有n個(gè)(n>1)空閑資源時(shí),如果任務(wù)調(diào)度隊(duì)列中沒有任務(wù),則不進(jìn)行調(diào)度;如果任務(wù)調(diào)度隊(duì)列中有一個(gè)或一個(gè)以上任務(wù),則具體按以下步驟執(zhí)行任務(wù)調(diào)度 a.先確定任務(wù)調(diào)度隊(duì)列中有多少個(gè)任務(wù)等待調(diào)度,假設(shè)有m個(gè)任務(wù); b.再判斷空閑資源數(shù)n是否大于待調(diào)度任務(wù)m,如果n>m,說明任務(wù)調(diào)度隊(duì)列中待調(diào)度任務(wù)少于空閑資源的數(shù)目,則選擇任務(wù)調(diào)度隊(duì)列中全部m個(gè)任務(wù),根據(jù)步驟3中的最大時(shí)延最小公式,為所選m個(gè)任務(wù)中的每個(gè)任務(wù)分配一個(gè)空閑資源; c.如果n≤m,說明任務(wù)調(diào)度隊(duì)列中待調(diào)度任務(wù)多于或等于空閑資源的數(shù)目,則選擇任務(wù)調(diào)度隊(duì)列中前n個(gè)任務(wù),根據(jù)步驟3中的最大時(shí)延最小公式,為所選n個(gè)任務(wù)中的每個(gè)任務(wù)分配一個(gè)空閑資源。
為減少資源空閑時(shí)間,提高資源利用率,若M0不為空,則只要存在空閑資源,就為M0前邊的n′個(gè)當(dāng)前調(diào)度任務(wù)分配資源。
步驟4根據(jù)當(dāng)前資源分配情況及資源恢復(fù)空閑情況,更新空閑資源集合; 在完成對當(dāng)前調(diào)度任務(wù)的資源分配后,一方面,應(yīng)從空閑資源集合中將當(dāng)前被占用的資源刪除,即另一方面,應(yīng)根據(jù)執(zhí)行任務(wù)Uk占用
的時(shí)延
對當(dāng)前被占用的資源是否恢復(fù)空閑進(jìn)行判斷,以便將恢復(fù)空閑的資源回補(bǔ)到空閑資源集合N0中再利用。此時(shí),空閑資源集合變?yōu)? 步驟5根據(jù)當(dāng)前的任務(wù)調(diào)度情況,更新任務(wù)調(diào)度隊(duì)列; 對每個(gè)當(dāng)前被占用資源所對應(yīng)的任務(wù)調(diào)度隊(duì)列進(jìn)行更新,即將當(dāng)前所分配的任務(wù)Uk添加到任務(wù)調(diào)度隊(duì)列
中,此時(shí) 步驟6判斷是否調(diào)度完所有任務(wù),如果調(diào)度完,則結(jié)束當(dāng)前任務(wù)調(diào)度流程;如果未調(diào)度完,則返回步驟2。
本步驟中,判斷是否調(diào)度完所有任務(wù)就是判斷未調(diào)度任務(wù)隊(duì)列M0是否為空,如果為空,則調(diào)度完所有任務(wù);否則,未調(diào)度完。
下面通過具體應(yīng)用實(shí)例的數(shù)據(jù),如網(wǎng)絡(luò)利用率(nuf)和時(shí)限內(nèi)到達(dá)的任務(wù)數(shù)比例(upnr),對本發(fā)明任務(wù)調(diào)度方法的性能和EDF調(diào)度的性能進(jìn)行比較、評價(jià)。
假設(shè),基于matlab平臺對本發(fā)明任務(wù)調(diào)度方法和EDF調(diào)度進(jìn)行仿真測試,實(shí)時(shí)系統(tǒng)的任務(wù)和資源配置情況如表一和表二所示,其中,表一為任務(wù)配置情況,每個(gè)任務(wù)的時(shí)限均為0.25s,表二為資源配置情況;評價(jià)結(jié)果數(shù)據(jù)如表三至表六,其中,表三為本發(fā)明任務(wù)調(diào)度方法的nuf數(shù)據(jù),表四為EDF調(diào)度方法的nuf數(shù)據(jù),表五為本發(fā)明任務(wù)調(diào)度方法的upnr數(shù)據(jù),表六為EDF調(diào)度方法的upnr數(shù)據(jù)。
表一 表二
表三
表四
表五
表六 由表三至表六的數(shù)據(jù)可以看出,本發(fā)明的實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度方法與EDF調(diào)度相比,在網(wǎng)絡(luò)利用率和時(shí)限內(nèi)到達(dá)的任務(wù)數(shù)比例上均有明顯提高。當(dāng)系統(tǒng)任務(wù)量進(jìn)一步增加時(shí),本發(fā)明任務(wù)調(diào)度方法的優(yōu)勢將更加明顯。
上述實(shí)例主要是多媒體應(yīng)用環(huán)境下,針對音頻和視頻任務(wù)的調(diào)度,實(shí)際應(yīng)用中,本發(fā)明的方法可以適用于各種應(yīng)用環(huán)境。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種實(shí)時(shí)系統(tǒng)中的任務(wù)調(diào)度方法,其特征在于,該方法包括
A、根據(jù)時(shí)限和運(yùn)算量對待調(diào)度任務(wù)進(jìn)行順序排列;
B、有空閑資源時(shí),按排列順序?yàn)橐粋€(gè)或一個(gè)以上待調(diào)度任務(wù)分配資源,其中,為一個(gè)以上待調(diào)度任務(wù)分配資源時(shí),所分配資源的多個(gè)任務(wù)間最大時(shí)延最小。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中,先根據(jù)待調(diào)度任務(wù)的時(shí)限先后,將時(shí)限早的任務(wù)排在任務(wù)調(diào)度隊(duì)列前邊;對存在的多個(gè)時(shí)限相同的任務(wù),再按任務(wù)運(yùn)算量大小,將運(yùn)算量大的任務(wù)排在任務(wù)調(diào)度隊(duì)列前邊;對多個(gè)時(shí)限和運(yùn)算量均相同的任務(wù),將所述任務(wù)隨機(jī)排列。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,步驟B所述為待調(diào)度任務(wù)分配資源具體包括
B1、初始化任務(wù)調(diào)度隊(duì)列;
B2、確定當(dāng)前要調(diào)度的一個(gè)或一個(gè)以上任務(wù);
B3、為步驟B2所確定的當(dāng)前要調(diào)度任務(wù)分配資源,且所分配資源的多個(gè)任務(wù)間滿足其中,Uk為當(dāng)前調(diào)度的任務(wù),Cik為確定要分配的資源;
B4、根據(jù)當(dāng)前資源分配情況及資源恢復(fù)空閑情況,更新空閑資源集合;
B5、根據(jù)當(dāng)前的任務(wù)調(diào)度情況,更新任務(wù)調(diào)度隊(duì)列;
B6、判斷是否調(diào)度完所有任務(wù),如果調(diào)度完,則結(jié)束當(dāng)前任務(wù)調(diào)度流程;如果未調(diào)度完,則返回步驟B2。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述每個(gè)任務(wù)調(diào)度隊(duì)列與每個(gè)可分配資源一一對應(yīng)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟B4中所述更新空閑資源集合具體為從空閑資源集合中刪除當(dāng)前被占用的資源,并將當(dāng)前恢復(fù)空閑的資源加入空閑資源集合中。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟B5所述更新任務(wù)調(diào)度隊(duì)列為將當(dāng)前所分配的任務(wù)Uk添加到任務(wù)調(diào)度隊(duì)列中。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟B6中所述判斷是否調(diào)度完所有任務(wù)為判斷未調(diào)度任務(wù)隊(duì)列是否為空,如果為空,則調(diào)度完所有任務(wù);否則,未調(diào)度完。
全文摘要
本發(fā)明公開了一種實(shí)時(shí)系統(tǒng)中的任務(wù)調(diào)度方法,包括A.根據(jù)時(shí)限和運(yùn)算量對待調(diào)度任務(wù)進(jìn)行順序排列;B.有空閑資源時(shí),按排列順序?yàn)橐粋€(gè)或一個(gè)以上待調(diào)度任務(wù)分配資源,其中,為一個(gè)以上待調(diào)度任務(wù)分配資源時(shí),所分配資源的多個(gè)任務(wù)間最大時(shí)延最小。采用本發(fā)明能實(shí)現(xiàn)對多資源多任務(wù)的最優(yōu)調(diào)度,提高資源利用率和時(shí)限內(nèi)到達(dá)任務(wù)比例。
文檔編號G06F9/46GK101145112SQ20071017670
公開日2008年3月19日 申請日期2007年11月1日 優(yōu)先權(quán)日2007年11月1日
發(fā)明者侯亞榮, 張書杰, 健 李, 璋 熊 申請人:北京工業(yè)大學(xué)