專利名稱:任務(wù)切換裝置、方法和程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及操作系統(tǒng)中的任務(wù)切換,尤其涉及通過(guò)對(duì)分配了任務(wù)的時(shí)間段(time slot)進(jìn)行切換來(lái)切換在處理器內(nèi)應(yīng)執(zhí)行的任務(wù)的任務(wù)切換裝置。
背景技術(shù):
操作系統(tǒng)的主要功能是硬件管理、任務(wù)管理、數(shù)據(jù)管理、和輸入輸出管理。其中任務(wù)管理是管理任務(wù)的執(zhí)行順序的功能,是用于使CPU和存儲(chǔ)器以及輸入輸出裝置等高效工作的重要功能。
所謂任務(wù)是指對(duì)程序的起動(dòng)及其執(zhí)行、結(jié)束等流程進(jìn)行綜合管理的控制單位。在操作系統(tǒng)的管理下工作的程序作為任務(wù)被處理,與程序的執(zhí)行有關(guān)的操作系統(tǒng)的操作全部以任務(wù)為單位被執(zhí)行。
決定任務(wù)執(zhí)行順序的算法之一,有分時(shí)調(diào)度法和按優(yōu)先度的切換法。分時(shí)調(diào)度法對(duì)任務(wù)分配某一執(zhí)行時(shí)間,在被分配的時(shí)間期間,處理器的執(zhí)行權(quán)屬于任務(wù),被分配的時(shí)間過(guò)后,執(zhí)行權(quán)轉(zhuǎn)移給別的任務(wù)。這樣,平等地按設(shè)定的時(shí)間給所有的任務(wù)分配執(zhí)行權(quán)。
并且,關(guān)于按優(yōu)先度的切換方法,專利文獻(xiàn)1和2均公開(kāi)了按任務(wù)的優(yōu)先度來(lái)切換任務(wù)的調(diào)度裝置。
特開(kāi)2000-20323號(hào)公報(bào);[專利文獻(xiàn)2]特開(kāi)平4-101233號(hào)公報(bào)。
但是,根據(jù)上述現(xiàn)有技術(shù),存在的問(wèn)題是為了確保各任務(wù)的必要性能,程序員在指定各個(gè)任務(wù)的優(yōu)先度方面,程序設(shè)計(jì)困難,并且一旦設(shè)計(jì)結(jié)束后缺乏更改的靈活性。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種任務(wù)切換裝置,該任務(wù)切換裝置使得指定用于滿足各任務(wù)必要性能的優(yōu)先度的程序設(shè)計(jì)容易進(jìn)行,具有程序設(shè)計(jì)的靈活性。
為了達(dá)到上述目的,本發(fā)明的任務(wù)切換裝置,在處理器中通過(guò)切換時(shí)間段來(lái)切換分配到時(shí)間段的任務(wù)的執(zhí)行,其特征在于,具有分配裝置,把第1類的多項(xiàng)任務(wù)都分配到一個(gè)時(shí)間段,把與第1類不同的第2類的多項(xiàng)任務(wù)分配到一個(gè)特定的時(shí)間段;任務(wù)選擇裝置,在切換后的時(shí)間段不是上述特定的時(shí)間段時(shí),選擇分配到該時(shí)間段的任務(wù),在切換后的時(shí)間段是上述特定的時(shí)間段時(shí),從第2類的多個(gè)任務(wù)中選擇一個(gè)任務(wù)來(lái)執(zhí)行。
根據(jù)該結(jié)構(gòu),第1類任務(wù)按一對(duì)一分配時(shí)間段的結(jié)果,對(duì)第1類任務(wù),在包括全部時(shí)間段的一個(gè)周期內(nèi)至少選擇執(zhí)行一次,所以能保證連續(xù)的處理性能。另一方面,第2類任務(wù)多個(gè)對(duì)一個(gè)地分配時(shí)間段的結(jié)果,不能保證連續(xù)處理性能。其結(jié)果,程序員對(duì)需要滿足連續(xù)處理性能的任務(wù),不必考慮優(yōu)先度,分為第1類即可。并且,程序員對(duì)不要求處理性能的任務(wù)分為第2類即可。這樣,對(duì)所有的任務(wù)都不必單獨(dú)給定優(yōu)先度,能夠方便于確保處理性能用的程序設(shè)計(jì),能確保程序設(shè)計(jì)的靈活性。
在此,也可以是上述第2類任務(wù)具有優(yōu)先度,上述任務(wù)選擇裝置在第2類的多項(xiàng)任務(wù)中按照優(yōu)先度選擇一項(xiàng)任務(wù)。
根據(jù)該結(jié)構(gòu),第2類任務(wù)從優(yōu)先度高的開(kāi)始執(zhí)行,所以,程序員對(duì)第1類任務(wù)不必考慮優(yōu)先度,把不要求連續(xù)處理性能的任務(wù)分為第2類,賦予優(yōu)先度即可,所以,能使程序設(shè)計(jì)和更改容易進(jìn)行。
并且,也可以采用這樣的結(jié)構(gòu)上述分配裝置,從預(yù)定的一個(gè)周期的時(shí)間中減去分配第1類任務(wù)的時(shí)間段的合計(jì)時(shí)間,把剩余的時(shí)間作為上述特定時(shí)間段的時(shí)間。
根據(jù)該結(jié)構(gòu),上述第2類任務(wù)在上述剩余時(shí)間內(nèi)執(zhí)行,所以,能盡量排除由于第2類任務(wù)的執(zhí)行而影響第1類各項(xiàng)任務(wù)的處理性能。
再者,也可以采用這樣的結(jié)構(gòu)上述分配裝置每次把第1類新任務(wù)分配到時(shí)間段時(shí),再次計(jì)算上述剩余時(shí)間,作為上述特定時(shí)間段的時(shí)間。
根據(jù)該結(jié)構(gòu),既能保證第1類各項(xiàng)任務(wù)的處理性能,又能動(dòng)態(tài)地為第2類任務(wù)分配最大限度的剩余時(shí)間。
并且,也可以采用這樣的結(jié)構(gòu)上述第1類任務(wù)是具有分配時(shí)間的指定的任務(wù),上述分配裝置在欲增加第1類新任務(wù)時(shí),如果已分配的任務(wù)的分配時(shí)間的合計(jì)和新任務(wù)的分配時(shí)間的總和超過(guò)一周期的時(shí)間,則拒絕該新任務(wù)的時(shí)間段分配。
根據(jù)該結(jié)構(gòu),能排除第1類新任務(wù)的增加,保證已有第1類任務(wù)的處理性能。
再者,上述任務(wù)切換裝置也可采用這樣的結(jié)構(gòu),它具有存儲(chǔ)裝置,存儲(chǔ)鎖定信息,該鎖定信息表示是否因某一任務(wù)對(duì)可由任務(wù)存取的資源的存取而使該資源處于鎖定狀態(tài);以及,變更裝置,在執(zhí)行中的任務(wù)欲存取鎖定狀態(tài)資源時(shí),把該任務(wù)從可執(zhí)行狀態(tài)變更為等待狀態(tài),在該資源的鎖定狀態(tài)被解除時(shí)把等待狀態(tài)的任務(wù)變更為可執(zhí)行狀態(tài),上述任務(wù)選擇裝置把處于等待狀態(tài)的任務(wù)從選擇對(duì)象中排除。
并且,上述任務(wù)切換裝置也可以采用這樣的結(jié)構(gòu)具有轉(zhuǎn)移裝置,在第1類和第2類任務(wù)中可執(zhí)行狀態(tài)的任務(wù)一個(gè)也不存在的情況下,使上述處理器轉(zhuǎn)移到省電狀態(tài)。
在此,上述處理器至少具有2個(gè)用于保存任務(wù)的前后關(guān)系的寄存器組,上述任務(wù)切換裝置還具有切換裝置,該切換裝置把寄存器組中的一個(gè)供給執(zhí)行中的任務(wù)使用,在另一個(gè)寄存器組中通過(guò)后臺(tái)處理使下一次應(yīng)執(zhí)行的任務(wù)的前后關(guān)系復(fù)原,當(dāng)時(shí)間段切換時(shí),對(duì)寄存器組進(jìn)行切換。
根據(jù)該結(jié)構(gòu),對(duì)寄存器組進(jìn)行切換來(lái)取代用程序來(lái)執(zhí)行的保存和復(fù)原前后關(guān)系,所以能使任務(wù)切換高速化。并且,使下一次應(yīng)執(zhí)行的任務(wù)的前后關(guān)系通過(guò)后臺(tái)處理來(lái)恢復(fù),所以能高效利用處理器時(shí)間的空閑處理等,實(shí)現(xiàn)任務(wù)切換的高速化。
如以說(shuō)明的那樣,根據(jù)本發(fā)明的任務(wù)切換裝置,程序員不必對(duì)需要滿足連續(xù)處理性能的任務(wù)考慮優(yōu)先度,只要分為第1類即可;對(duì)不要求處理性能的任務(wù)分為第2類即可。這樣,不必對(duì)全部任務(wù)分別賦予優(yōu)先度,其效果是容易進(jìn)行用于確保處理性能的程序設(shè)計(jì),能確保程序設(shè)計(jì)的靈活性。
并且,第2類任務(wù)從優(yōu)先度高的開(kāi)始執(zhí)行,所以程序員對(duì)第1類任務(wù)不必考慮優(yōu)先度,把不要求連續(xù)處理性能的任務(wù)分為第2類,賦予優(yōu)先度即可,容易進(jìn)行程序設(shè)計(jì)和更改。
再者,本發(fā)明的任務(wù)切換方法及其程序,也是和上述一樣的結(jié)構(gòu),具有同樣的作用和效果。
本發(fā)明的上述和其他目的以及其優(yōu)點(diǎn)和特征,將通過(guò)結(jié)合下述附圖來(lái)舉例詳細(xì)說(shuō)明本發(fā)明的實(shí)施例,會(huì)更加明了。
圖1是表示本發(fā)明的實(shí)施方式中進(jìn)行任務(wù)切換的程序執(zhí)行裝置的主要部分結(jié)構(gòu)的方框圖。
圖2是表示時(shí)間段存儲(chǔ)部?jī)?nèi)的時(shí)間段信息和任務(wù)存儲(chǔ)部?jī)?nèi)的任務(wù)管理模塊的具體例。
圖3表示在mutex存儲(chǔ)部?jī)?nèi)存儲(chǔ)的mutex管理塊和任務(wù)存儲(chǔ)部?jī)?nèi)存儲(chǔ)的等待隊(duì)列。
圖4是表示時(shí)間段切換部和任務(wù)選擇部進(jìn)行任務(wù)切換的情況的說(shuō)明圖。
圖5是表示B類任務(wù)結(jié)束時(shí)的任務(wù)切換情況的說(shuō)明圖。
圖6是表示B類任務(wù)鎖定操作失敗時(shí)的情況的說(shuō)明圖。
圖7是表示A類任務(wù)鎖定操作失敗時(shí)的情況的說(shuō)明圖。
圖8表示任務(wù)鎖定解除時(shí)的情況的說(shuō)明圖。
圖9表示任務(wù)鎖定解除時(shí)的情況的另一說(shuō)明圖。
圖10是表示調(diào)度處理的詳細(xì)內(nèi)容的流程圖。
圖11是表示任務(wù)增加處理詳細(xì)內(nèi)容的流程圖。
圖12是表示mutex控制部進(jìn)行鎖定處理的詳細(xì)內(nèi)容的流程圖。
圖13是表示mutex控制部進(jìn)行mutex鎖定處理的詳細(xì)內(nèi)容的流程圖。
圖14是表示程序執(zhí)行裝置的變形例的結(jié)構(gòu)圖。
具體實(shí)施例方式圖1是表示本發(fā)明的實(shí)施方式中進(jìn)行任務(wù)切換的程序執(zhí)行裝置的主要部分結(jié)構(gòu)的方框圖。該圖以模塊示出通過(guò)在處理器中執(zhí)行作為操作系統(tǒng)的一部分功能進(jìn)行任務(wù)切換的軟件來(lái)實(shí)現(xiàn)的功能。處理器的硬件結(jié)構(gòu)可采用一般結(jié)構(gòu)。
該程序執(zhí)行裝置構(gòu)成為對(duì)具有分配時(shí)間的指定的任務(wù)和具有優(yōu)先度的任務(wù)這兩種任務(wù)在一個(gè)處理器中進(jìn)行處理,確保前者的任務(wù)的必要性能,并按照優(yōu)先度選擇執(zhí)行后者的任務(wù)。
如該圖所示,程序執(zhí)行裝置由任務(wù)調(diào)度部10、程序存儲(chǔ)部20、定時(shí)控制部30和執(zhí)行控制部40構(gòu)成。
任務(wù)調(diào)度部10進(jìn)行2種任務(wù)的調(diào)度。也就是說(shuō),任務(wù)調(diào)度部10對(duì)前者的任務(wù),對(duì)具有分配時(shí)間指定的各項(xiàng)任務(wù)分配一個(gè)時(shí)間段,進(jìn)行在預(yù)定的周期內(nèi)至少選擇一次各項(xiàng)任務(wù)的分時(shí)調(diào)度。任務(wù)調(diào)度部10對(duì)后者的任務(wù),進(jìn)行在1個(gè)周期內(nèi)的上述時(shí)間段合計(jì)時(shí)間的剩余時(shí)間內(nèi),在具有優(yōu)先度的多項(xiàng)任務(wù)中選擇一個(gè)任務(wù)的調(diào)度。在此,所謂時(shí)間段,是指處理器中執(zhí)行程序的時(shí)間在周期內(nèi)按分配時(shí)間劃分的時(shí)間。
程序存儲(chǔ)部20存儲(chǔ)作為任務(wù)調(diào)度部10的調(diào)度對(duì)象的任務(wù)主體的程序以及與程序有關(guān)的信息。
定時(shí)控制部30,在由任務(wù)調(diào)度部10每次設(shè)定分配時(shí)間時(shí),開(kāi)始計(jì)算時(shí)間,當(dāng)達(dá)到該分配時(shí)間時(shí)輸出“時(shí)間已過(guò)(time out)”。為了通知時(shí)間段的切換時(shí)間,向任務(wù)調(diào)度部10通知該時(shí)間已過(guò)。
執(zhí)行控制部40執(zhí)行由任務(wù)調(diào)度部10選擇的任務(wù)。執(zhí)行控制部40相當(dāng)于執(zhí)行處理器任務(wù)的硬件。
任務(wù)調(diào)度部10由任務(wù)接受部11、時(shí)間段存儲(chǔ)部12、任務(wù)存儲(chǔ)部13、時(shí)間段切換部14、任務(wù)選擇部15、mutex存儲(chǔ)部16和mutex控制部17構(gòu)成。
<1、任務(wù)接受部11>
任務(wù)接受部11根據(jù)來(lái)自用戶操作和用戶程序等的指示,接受任務(wù)增加請(qǐng)求,從程序存儲(chǔ)部20中作為與該任務(wù)有關(guān)的信息,讀出<任務(wù)信息>、<優(yōu)先度>和<分配時(shí)間>,生成時(shí)間段信息和任務(wù)管理塊,使該任務(wù)成為調(diào)度的對(duì)象,并設(shè)定到時(shí)間段存儲(chǔ)部12、任務(wù)存儲(chǔ)部13中。
在此,<任務(wù)信息>由程序開(kāi)始地址和棧指針構(gòu)成。程序開(kāi)始地址是寫入任務(wù)的起始地址。棧指針是位置信息,表示在發(fā)生任務(wù)切換時(shí)暫時(shí)保存任務(wù)狀態(tài)的存儲(chǔ)地址。
<優(yōu)先度>是對(duì)于具有分配時(shí)間的指定任務(wù)和具有優(yōu)先度的任務(wù)進(jìn)行區(qū)分的標(biāo)準(zhǔn),且在為后者時(shí)表示優(yōu)先度,具有這兩種意思。
也就是說(shuō),優(yōu)先度0的任務(wù)是具有分配時(shí)間的任務(wù)(以下稱為A類任務(wù)),優(yōu)先度不是0的任務(wù)是具有優(yōu)先度的任務(wù)(以下稱為B類任務(wù)),其意思如下。
A類任務(wù)是具有分配時(shí)間指定的任務(wù),在任務(wù)調(diào)度部10中,對(duì)時(shí)間段按1對(duì)1對(duì)應(yīng)地分配,在該時(shí)間段的分配時(shí)間內(nèi)切實(shí)執(zhí)行。由于以執(zhí)行時(shí)間的長(zhǎng)度來(lái)決定處理性能,所以,應(yīng)當(dāng)把所謂時(shí)間驅(qū)動(dòng)(time driven)型的任務(wù)作為A類。例如,動(dòng)畫數(shù)據(jù)的譯碼/編碼處理、聲音數(shù)據(jù)的譯碼/編碼處理等連續(xù)需要一定的處理性能的任務(wù),希望作為A類。
B類任務(wù)和另一B類任務(wù)一起被分配到一個(gè)時(shí)間段,在該時(shí)間段保持的分配時(shí)間內(nèi),執(zhí)行優(yōu)先度高的任務(wù)。在此,優(yōu)先度從高到底依次取1、2、3……的值。所謂事件驅(qū)動(dòng)型的任務(wù)應(yīng)當(dāng)作為B類。例如,把用戶操作作為事件,用文字和靜態(tài)圖像構(gòu)成的菜單進(jìn)行顯示的處理等,不連續(xù)需要一定的處理性能,但不定期地隨時(shí)發(fā)生的任務(wù)希望作為B類。在該情況下,例如越是處理嚴(yán)格要求響應(yīng)速度的事件的任務(wù),可使其優(yōu)先度越高。
<分配時(shí)間>僅在任務(wù)為A類時(shí)有效,是對(duì)與任務(wù)相對(duì)應(yīng)的時(shí)間段的分配時(shí)間進(jìn)行指定的值。該分配時(shí)間和優(yōu)先度由程序指定。
并且,任務(wù)接受部11,在有來(lái)自用戶操作和用戶程序等的指示的情況下,或者在任務(wù)執(zhí)行結(jié)束的情況下,刪除時(shí)間段存儲(chǔ)部12、任務(wù)存儲(chǔ)部13中存儲(chǔ)的該任務(wù)的時(shí)間段信息和任務(wù)管理塊。
<2、時(shí)間段存儲(chǔ)部12>
時(shí)間段存儲(chǔ)部12用于存儲(chǔ)時(shí)間段信息,該信息用于生成作為任務(wù)切換標(biāo)準(zhǔn)的時(shí)間段。
圖2是表示時(shí)間段存儲(chǔ)部12內(nèi)的時(shí)間段信息和任務(wù)存儲(chǔ)部13內(nèi)的任務(wù)管理模塊的具體例。如該圖所示,時(shí)間段存儲(chǔ)部12存儲(chǔ)多個(gè)時(shí)間段信息100、110、120……。時(shí)間段信息100表示分配了多項(xiàng)B類任務(wù)的時(shí)間段。該時(shí)間段信息100中可以不存在B類任務(wù),也可以預(yù)先生成。此外的時(shí)間段信息110、120……表示分配了A類任務(wù)的時(shí)間段。
時(shí)間段信息100與時(shí)間段之一相對(duì)應(yīng),由分配時(shí)間100a、標(biāo)記100b和指針100c構(gòu)成。其他時(shí)間段信息也一樣。
分配時(shí)間表示可執(zhí)行與該時(shí)間段相對(duì)應(yīng)的任務(wù)的時(shí)間。當(dāng)任務(wù)實(shí)際執(zhí)行的時(shí)間達(dá)到分配時(shí)間時(shí),切換到下一時(shí)間段上。與A類任務(wù)相對(duì)應(yīng)的分配時(shí)間110a、120a……,在生成時(shí)間段信息的同時(shí)進(jìn)行設(shè)定。與B類多項(xiàng)任務(wù)相對(duì)應(yīng)的分配時(shí)間100a作為從同步寄存器18中保存的一個(gè)周期的時(shí)間中,減去其他時(shí)間段的分配時(shí)間110a、120a……的合計(jì)時(shí)間的剩余時(shí)間。該剩余時(shí)間在每次增加、刪除任務(wù)時(shí)發(fā)生變化。
執(zhí)行標(biāo)記表示該時(shí)間段有效或無(wú)效。在生成時(shí)間段信息時(shí)設(shè)定為有效,在執(zhí)行任務(wù)過(guò)程中存取地址的資源處于鎖定狀態(tài)而成為等待狀態(tài)時(shí)設(shè)定為無(wú)效,之后,從等待狀態(tài)返回到可執(zhí)行狀態(tài)時(shí)設(shè)定為有效。在執(zhí)行標(biāo)記表示無(wú)效時(shí),時(shí)間段切換部14將其視為不存在時(shí)間段信息。
指針指向與該時(shí)間段相對(duì)應(yīng)的任務(wù)管理塊。
這些時(shí)間段信息100、110、120……構(gòu)成數(shù)組,其順序表示時(shí)間段的生成順序。
<3、任務(wù)存儲(chǔ)部13>
任務(wù)存儲(chǔ)部13存儲(chǔ)分配到時(shí)間段的與任務(wù)相對(duì)應(yīng)的任務(wù)管理塊200、201……。任務(wù)管理塊200、201……分別與一個(gè)任務(wù)相對(duì)應(yīng),是用于管理該任務(wù)的信息。
任務(wù)管理塊200由任務(wù)信息200a、優(yōu)先度200b、連接地址200c構(gòu)成。
任務(wù)信息200a包括程序開(kāi)始地址(或應(yīng)當(dāng)再起動(dòng)程序的地址)和棧指針。在生成任務(wù)管理塊時(shí),對(duì)由任務(wù)接收部輸入的上述任務(wù)信息進(jìn)行保存。當(dāng)切換任務(wù)時(shí),表示中斷的任務(wù)的執(zhí)行地址和這時(shí)的棧指針值。
優(yōu)先度200b表示該任務(wù)的優(yōu)先度。
在該任務(wù)作為要素與執(zhí)行隊(duì)列或等待隊(duì)列相連接的情況下,連接地址200c保存一指針,該指針指向作為執(zhí)行隊(duì)列或等待隊(duì)列中的下一個(gè)要素的任務(wù)管理塊。
具體來(lái)說(shuō),在與A類任務(wù)相對(duì)應(yīng)的任務(wù)管理塊中,連接地址(210c等),在該任務(wù)處于可執(zhí)行狀態(tài)的情況下為nu11(無(wú)效);在該任務(wù)處于等待狀態(tài)的情況下為指向等待隊(duì)列的下一要素的指針。在與B類任務(wù)相對(duì)應(yīng)的任務(wù)管理塊中,在該任務(wù)處于可執(zhí)行狀態(tài)的情況下,連接地址200c為指向形成執(zhí)行隊(duì)列的下一要素的指針;在該任務(wù)處于等待狀態(tài)的情況下,連接地址200c為指向形成等待隊(duì)列的下一要素的指針。
<4、時(shí)間段切換部14>
時(shí)間段切換部14在當(dāng)前時(shí)間段內(nèi),當(dāng)任務(wù)執(zhí)行時(shí)間達(dá)到分配時(shí)間時(shí),進(jìn)行時(shí)間段的切換。由定時(shí)控制部30用時(shí)間已到(time out)來(lái)通知是否已達(dá)到分配時(shí)間。收到通知的時(shí)間段切換部14選擇下一時(shí)間段信息。在本實(shí)施例中,下次選擇的時(shí)間段信息按照該排列順序。時(shí)間段切換部14從已選擇的時(shí)間段信息中取得分配時(shí)間,設(shè)定到定時(shí)控制部30。由此,開(kāi)始下一時(shí)間段的分配時(shí)間的計(jì)算。
<5、任務(wù)選擇部15>
任務(wù)選擇部15在上述時(shí)間段切換部14切換時(shí)間段時(shí),以及有來(lái)自執(zhí)行中的程序中的指示時(shí),將當(dāng)前執(zhí)行中任務(wù)的執(zhí)行地址、棧指針等在該任務(wù)的任務(wù)管理塊中作為任務(wù)信息進(jìn)行保存,從應(yīng)下次執(zhí)行的任務(wù)的任務(wù)管理塊中取出任務(wù)信息,輸出到執(zhí)行控制部40。與此同時(shí)也進(jìn)行執(zhí)行中任務(wù)的前后關(guān)系(寄存器數(shù)據(jù)等)保存和應(yīng)下一次執(zhí)行的任務(wù)的前后關(guān)系的恢復(fù)。這樣,應(yīng)當(dāng)下次執(zhí)行的任務(wù)變成執(zhí)行狀態(tài)。
圖4是表示時(shí)間段切換部14和任務(wù)選擇部15進(jìn)行任務(wù)切換的情況的說(shuō)明圖。在該圖中,T是在周期寄存器18中保存的周期;t0是與B類任務(wù)相對(duì)應(yīng)的時(shí)間段信息100所對(duì)應(yīng)的時(shí)間段,其長(zhǎng)度表示分配時(shí)間。t1~tn是分別與A類的n個(gè)任務(wù)相對(duì)應(yīng)的n個(gè)時(shí)間段信息110、120……所對(duì)應(yīng)的時(shí)間段。其長(zhǎng)度表示分配時(shí)間。S表示由時(shí)間段選擇部14和任務(wù)選擇部15進(jìn)行任務(wù)切換的調(diào)度處理。如該圖所示,在時(shí)間段t0開(kāi)始時(shí)的調(diào)度處理中,選擇執(zhí)行B類的多項(xiàng)任務(wù)B1、B2、B3中優(yōu)先度最高的任務(wù)B1。在時(shí)間段t1開(kāi)始時(shí)的調(diào)度處理中,執(zhí)行與時(shí)間段信息110相對(duì)應(yīng)的任務(wù)A1。對(duì)時(shí)間段t2~tn也是一樣。這樣,A類任務(wù)在一個(gè)周期T之間一定執(zhí)行一次。
此外,圖5是表示在時(shí)間段t0中執(zhí)行中的任務(wù)結(jié)束時(shí)的任務(wù)切換情況的說(shuō)明圖。在該圖中,任務(wù)B1在本身的處理已結(jié)束的情況下,將此意通知任務(wù)選擇部15。根據(jù)該通知,進(jìn)行任務(wù)B1的刪除處理(圖中的E)和任務(wù)的切換處理(圖中的S1)。在刪除處理E中因?yàn)槿蝿?wù)B1已結(jié)束,所以刪除任務(wù)B1的任務(wù)管理塊。在切換處理S1中,在任務(wù)B1的任務(wù)管理塊被刪除后,利用任務(wù)選擇部15選擇并執(zhí)行優(yōu)先度最高的任務(wù)B2。這樣,B類的多項(xiàng)任務(wù)在被分配的時(shí)間段t0內(nèi)從優(yōu)先度最高的任務(wù)開(kāi)始依次執(zhí)行。
<6、mutex存儲(chǔ)部16>
mutex(mutual exclusion互相排斥)是指在2項(xiàng)以上的任務(wù)競(jìng)爭(zhēng)存取一個(gè)資源的情況下進(jìn)行調(diào)解的機(jī)構(gòu),是包含在mutex控制部17內(nèi)的功能,通過(guò)對(duì)資源的鎖定狀態(tài)和鎖定解除狀態(tài)進(jìn)行管理的對(duì)象(object)(程序)來(lái)實(shí)現(xiàn)。該機(jī)構(gòu)對(duì)可能有2個(gè)以上的任務(wù)競(jìng)爭(zhēng)存取的每個(gè)資源均進(jìn)行配置。當(dāng)某任務(wù)在mutex的鎖定操作中成功時(shí),mutex(或資源)變成鎖定狀態(tài),即使其他任務(wù)進(jìn)行鎖定操作也要等到變成鎖定解除狀態(tài)。這樣,鎖定操作成功的任務(wù)能專用相應(yīng)的資源。當(dāng)進(jìn)行了鎖定操作的任務(wù)進(jìn)行鎖定解除操作后,其他任務(wù)能夠進(jìn)行鎖定操作。執(zhí)行中的任務(wù)在存取資源的情況下,僅在對(duì)與該資源相對(duì)應(yīng)的mutex進(jìn)行鎖定操作成功時(shí)才能存取資源。在已處于鎖定狀態(tài)的情況下,要等待到變成鎖定解除狀態(tài)。
圖3表示在mutex存儲(chǔ)部16內(nèi)存儲(chǔ)的mutex管理塊300、301……和任務(wù)存儲(chǔ)部13內(nèi)存儲(chǔ)的等待隊(duì)列。
在該圖中,mutex管理塊300、301……對(duì)應(yīng)于有2個(gè)以上的任務(wù)競(jìng)爭(zhēng)存取的可能性的各個(gè)資源被設(shè)置。
mutex管理塊300包括鎖定變量300a和指針300b。
鎖定變量300a表示2種狀態(tài)(1鎖定狀態(tài);0鎖定解除狀態(tài))中的某一種。初始值為0,為了從鎖定解除狀態(tài)變成鎖定狀態(tài),必須進(jìn)行鎖定操作。為了從鎖定狀態(tài)變成鎖定解除狀態(tài),只允許進(jìn)行了鎖定操作的任務(wù)進(jìn)行操作。
指針300b指向等待隊(duì)列的起始任務(wù)管理塊,該任務(wù)管理塊表示在鎖定狀態(tài)下進(jìn)行了鎖定操作的任務(wù)(鎖定操作失敗的任務(wù))。與等待隊(duì)列相鏈接的任務(wù)管理塊200′、201′……,與鎖定操作失敗的任務(wù)相對(duì)應(yīng),分別形成按連接地址200′c、201′c……依次連接的等待隊(duì)列。
<7、mutex控制部17>
mutex控制部17,當(dāng)進(jìn)行mutex的鎖定操作和鎖定解除操作時(shí),進(jìn)行鎖定變量操作,并進(jìn)行對(duì)任務(wù)選擇部15的任務(wù)管理塊的操作請(qǐng)求和對(duì)時(shí)間段切換部14的通知和執(zhí)行標(biāo)記的操作請(qǐng)求。
圖6是表示B類任務(wù)鎖定操作失敗時(shí)的情況的說(shuō)明圖。在該圖中表示對(duì)在時(shí)間段t0中執(zhí)行中的任務(wù)B1欲存取的資源所對(duì)應(yīng)的mutex進(jìn)行鎖定操作(圖中的L鎖定處理),并失敗的情況。在該mutex已是鎖定狀態(tài)的情況下,任務(wù)B1在鎖定操作中失敗,所以,如該圖所示通過(guò)鎖定處理L從任務(wù)存儲(chǔ)部13的執(zhí)行隊(duì)列轉(zhuǎn)移到等待隊(duì)列中,并且,通過(guò)任務(wù)切換處理S1切換到任務(wù)B2。在該mutex從鎖定狀態(tài)變成鎖定解除狀態(tài)期間,任務(wù)B1被從執(zhí)行隊(duì)列中排除,所以任務(wù)B1被從調(diào)度對(duì)象中排除。
這樣,在與B類任務(wù)相對(duì)應(yīng)的時(shí)間段t0,當(dāng)執(zhí)行中的任務(wù)變成等待狀態(tài)時(shí),切換到下一順序的任務(wù)。
并且,任務(wù)B1在鎖定處理中,在鎖定操作成功的情況下,不切換到任務(wù)B2,在時(shí)間段t0期間繼續(xù)執(zhí)行(存取資源)。
圖7是表示A類任務(wù)鎖定操作失敗時(shí)的情況的說(shuō)明圖。在該圖中,在A類任務(wù)A2鎖定操作失敗,轉(zhuǎn)移到等待隊(duì)列的情況下,即使未到時(shí)間段t0的分配時(shí)間,也能通過(guò)調(diào)度處理(圖中為S)切換到該時(shí)間段上。與A類任務(wù)相對(duì)應(yīng)的時(shí)間段中,只分配一個(gè)任務(wù),所以即使尚有時(shí)間段的剩余時(shí)間,也要切換時(shí)間段。
并且,在任務(wù)A2鎖定操作成功的情況下,在已到時(shí)間段t2的分配時(shí)間時(shí),切換到下一時(shí)間段。
圖8表示任務(wù)鎖定解除時(shí)的情況的說(shuō)明圖。如該圖所示,在執(zhí)行中的任務(wù)A1對(duì)處于鎖定狀態(tài)的mutex進(jìn)行鎖定解除的情況下,通過(guò)鎖定解除處理R,與該mutex相對(duì)應(yīng)的等待隊(duì)列R的任務(wù)B1返回到執(zhí)行隊(duì)列B中。這樣,任務(wù)B1在選擇了與其以后的任務(wù)相對(duì)應(yīng)的時(shí)間段t0的情況下執(zhí)行。
圖9表示任務(wù)鎖定解除時(shí)的情況的另一說(shuō)明圖。在該圖中在執(zhí)行中的任務(wù)A2對(duì)處于鎖定狀態(tài)的mutex進(jìn)行鎖定解除的情況下,通過(guò)鎖定解除處理R,與該mutex相對(duì)應(yīng)的等待隊(duì)列S的任務(wù)B2返回執(zhí)行隊(duì)列B。與圖8不同,任務(wù)B2返回到任務(wù)B1和B3之間。這是因?yàn)榘磧?yōu)先度順序排列返回執(zhí)行隊(duì)列。該情況相當(dāng)于在任務(wù)B2位于等待隊(duì)列中的期間,生成相優(yōu)先度比其更高的任務(wù)B1等的情況。在此之后選擇時(shí)間段t0的情況下,選擇執(zhí)行優(yōu)先度最高的任務(wù)B1。
以下,關(guān)于本發(fā)明的程序執(zhí)行裝置中處理的詳細(xì)內(nèi)容,說(shuō)明調(diào)度處理(圖4~圖9中的S)、mutex鎖定處理(圖6、圖7中的L)和mutex鎖定解除處理(圖8、9中的R)、任務(wù)切換處理(圖5、圖6中的S1)、任務(wù)增加處理、任務(wù)刪除處理(圖5中的E)。
<1、調(diào)度處理>
圖10是詳細(xì)示出調(diào)度處理的的流程圖。該圖中,在定時(shí)控制部30把時(shí)間已到通知給時(shí)間段切換部14時(shí)、以及執(zhí)行中任務(wù)在鎖定操作中失敗時(shí)(參見(jiàn)圖7),調(diào)度處理被調(diào)用并開(kāi)始執(zhí)行。圖中,i為用于計(jì)數(shù)執(zhí)行標(biāo)記無(wú)效的時(shí)間段信息的變量,(n+1)表示存在的時(shí)間段信息的個(gè)數(shù)。
首先,時(shí)間段切換部14把作為計(jì)數(shù)器使用的變量i初始化為0(S401),將當(dāng)前執(zhí)行中任務(wù)的狀態(tài)保存到任務(wù)管理塊中(S402)。
然后,任務(wù)選擇部15在變量i上加1(S403),選擇時(shí)間段信息排列中的下一順序的時(shí)間段信息,在沒(méi)有下一要素的情況下,選擇時(shí)間段信息排列的起始要素,取得已選定的時(shí)間段信息(S404)。再者,時(shí)間段切換部14取出已選的時(shí)間段信息中所包含的分配時(shí)間,設(shè)定到定時(shí)控制部30(S405)。這樣,定時(shí)控制部30開(kāi)始計(jì)數(shù),一直計(jì)數(shù)到分配時(shí)間結(jié)束。
再者,時(shí)間段切換部14對(duì)已取得的時(shí)間段信息是否是時(shí)間段信息100進(jìn)行判斷。也就是說(shuō),對(duì)下面應(yīng)當(dāng)執(zhí)行的任務(wù)是B類還是A類進(jìn)行判斷(S406)。
在判斷結(jié)果是A類的情況下,取得該時(shí)間段信息中的指針指向的任務(wù)管理塊(S407),若時(shí)間段信息中的執(zhí)行標(biāo)記是1(有效)(S408),則根據(jù)任務(wù)管理塊中的任務(wù)信息,使該任務(wù)狀態(tài)恢復(fù)(S411)。這樣,切換到A類任務(wù)上。
并且,在判斷結(jié)果為B類的情況下,時(shí)間段切換部14對(duì)在時(shí)間段信息100中的指針上是否連接了任務(wù)管理塊的執(zhí)行隊(duì)列(指針有效與否)進(jìn)行判斷(S412)。在判斷為已連接了執(zhí)行隊(duì)列的情況下,取得優(yōu)先度最高的起始任務(wù)管理塊(S413),根據(jù)該任務(wù)管理塊中的任務(wù)信息,使該任務(wù)狀態(tài)恢復(fù)(S411),這樣,切換到B類任務(wù)中優(yōu)先度最高的任務(wù)上。并且,在判斷為未連接執(zhí)行隊(duì)列的情況下,不存在能夠執(zhí)行的B類任務(wù)。在此情況下,為了選擇下一個(gè)時(shí)間段信息,返回S403。
在上述S408中,若執(zhí)行標(biāo)記為無(wú)效(S408否),則時(shí)間段切換部14再次返回到S403、S404(S409否),選擇下一時(shí)間段。并且,通過(guò)這樣反復(fù)進(jìn)行,在n+1任務(wù)管理信息為無(wú)效的情況下(S409是),也就是說(shuō),能夠執(zhí)行的任務(wù)一個(gè)也沒(méi)有的情況下,使程序執(zhí)行裝置轉(zhuǎn)到省電狀態(tài)(S410)。
這樣,由任務(wù)調(diào)度部10進(jìn)行調(diào)度處理時(shí),進(jìn)行A類任務(wù)和B類任務(wù)不同的調(diào)度。也就是說(shuō),任務(wù)調(diào)度部10,在選擇了A類時(shí)間段(時(shí)間段信息1、2、……所對(duì)應(yīng)的時(shí)間段)的情況下,切換到對(duì)該時(shí)間段僅分配了一個(gè)的A類任務(wù)。并且,任務(wù)調(diào)度部10,在選擇了已分配B類任務(wù)的時(shí)間段(與時(shí)間段信息100相對(duì)應(yīng)的時(shí)間段)的情況下,切換到多個(gè)B類任務(wù)中優(yōu)先度最高的任務(wù)。
并且,圖5和圖6所示的切換處理S1與圖10的調(diào)度處理大致相同即可。例如在切換處理S1中,也可以從圖10調(diào)度處理中的S412開(kāi)始。
<2、任務(wù)增加處理>
圖11是詳細(xì)示出任務(wù)調(diào)度部10中的任務(wù)增加處理的流程圖。該任務(wù)增加處理,在由用戶操作和用戶程序等發(fā)出任務(wù)增加請(qǐng)求時(shí)開(kāi)始進(jìn)行。
接受任務(wù)增加請(qǐng)求,任務(wù)接受部11取得應(yīng)增加的任務(wù)的任務(wù)信息、優(yōu)先度和分配時(shí)間(S501),對(duì)應(yīng)當(dāng)增加的任務(wù)類別是A類還是B類(該優(yōu)先度是否為0)進(jìn)行判斷(S502)。
在判斷為應(yīng)增加的任務(wù)是A類的情況下,任務(wù)接受部11對(duì)能否增加時(shí)間段進(jìn)行檢查。也就是說(shuō),任務(wù)接受部11從時(shí)間段存儲(chǔ)部12中讀出與A類任務(wù)相對(duì)應(yīng)的時(shí)間段信息110、120、……內(nèi)的分配時(shí)間,計(jì)算出合計(jì)值,在該合計(jì)值上加上應(yīng)當(dāng)增加的任務(wù)的分配時(shí)間后的總和,如果沒(méi)有超過(guò)周期寄存器18內(nèi)保存的周期值,那么就判斷為能夠增加與該任務(wù)相對(duì)應(yīng)的時(shí)間段(S503)。如果超過(guò)該周期值,那么對(duì)增加請(qǐng)求返回一個(gè)錯(cuò)誤(S504)。
如果判斷為能夠增加,那么任務(wù)接受部11生成已設(shè)定了分配時(shí)間和執(zhí)行標(biāo)記(這時(shí)為0)的時(shí)間段信息(S505),生成包括任務(wù)信息和優(yōu)先度在內(nèi)的任務(wù)管理塊(S506)。
在生成了時(shí)間段信息和任務(wù)管理塊之后,任務(wù)接受部11為了表示其對(duì)應(yīng)關(guān)系,把任務(wù)管理塊的存放位置設(shè)定為時(shí)間段信息的指針(S507)。最后使該時(shí)間段的執(zhí)行標(biāo)記生效(S508)。
在上述S502中判斷出應(yīng)當(dāng)增加的任務(wù)是B類的情況下,任務(wù)接受部11生成應(yīng)當(dāng)增加的任務(wù)的任務(wù)管理塊(S509),增加到與時(shí)間段信息100相對(duì)應(yīng)的執(zhí)行隊(duì)列中,向執(zhí)行隊(duì)列內(nèi)的增加,按照從執(zhí)行隊(duì)列的前頭開(kāi)始按照優(yōu)先度高低順序排列,尋找應(yīng)當(dāng)增加的位置,增加該任務(wù)管理塊(S510)。并且,在時(shí)間段信息100內(nèi)的執(zhí)行標(biāo)記中設(shè)定1(S508)。
這樣,在增加處理中,對(duì)已有的時(shí)間段信息和任務(wù)管理塊(參見(jiàn)圖2),在應(yīng)當(dāng)增加的任務(wù)是A類的情況下,增加新的時(shí)間段信息和新的任務(wù)管理塊;在應(yīng)當(dāng)增加的任務(wù)是B類的情況下,在與執(zhí)行隊(duì)列的優(yōu)先度相對(duì)應(yīng)的位置上增加新的任務(wù)管理塊。
并且,圖5所示的任務(wù)刪除處理E,在應(yīng)當(dāng)刪除的任務(wù)是A類的情況下,刪除與該任務(wù)相對(duì)應(yīng)的時(shí)間段信息和任務(wù)管理塊;在應(yīng)當(dāng)刪除的任務(wù)是B類的情況下,從與該任務(wù)相對(duì)應(yīng)的任務(wù)管理塊執(zhí)行隊(duì)列中刪除。
<3、mutex鎖定處理>
圖12是詳細(xì)示出mutex控制部17進(jìn)行鎖定處理的的流程圖。該鎖定處理是圖6和圖7的鎖定處理L,是為了于在執(zhí)行中的任務(wù)存取資源之一前,鎖定與該資源相對(duì)應(yīng)的mutex,由執(zhí)行中的任務(wù)來(lái)進(jìn)行調(diào)用的處理。
被執(zhí)行中的任務(wù)調(diào)用時(shí),mutex控制部17對(duì)與資源相對(duì)應(yīng)的mutex管理程序進(jìn)行鎖定變量的讀出和有效值“1”的寫入(S601)。為了防止在該讀出和寫入之間因其他任務(wù)進(jìn)行同樣的處理而使值產(chǎn)生矛盾,用一個(gè)指令來(lái)進(jìn)行讀出和寫入。這可以利用處理器中安裝的read-modifg-write(讀出修改寫入)指令來(lái)實(shí)現(xiàn)。
如果讀出的鎖定變量是0(鎖定解除狀態(tài))(S602是),那么,是鎖定操作的成功,通過(guò)上述寫入使“1”設(shè)定完畢,所以結(jié)束鎖定處理。這樣,執(zhí)行控制返回到調(diào)用鎖定處理的任務(wù),該任務(wù)專有與mutex相對(duì)應(yīng)的資源,可對(duì)其進(jìn)行存取。
如果讀出的鎖定變量是1(鎖定狀態(tài))(S602否),則資源已被其他任務(wù)專用,所以,調(diào)用元的任務(wù)在成為鎖定解除狀態(tài)之前不能存取該資源。在此情況下,mutex控制部17對(duì)調(diào)用元的任務(wù)是A類還是B類進(jìn)行判斷。
如果判斷結(jié)果是A類(優(yōu)先度為0)(S603是),則使對(duì)應(yīng)的時(shí)間段信息的執(zhí)行標(biāo)記無(wú)效(S604)。這樣,該時(shí)間段信息從調(diào)度對(duì)象中除去。并且,mutex控制部17把調(diào)用元的任務(wù)的任務(wù)管理塊從執(zhí)行隊(duì)列中取出,連接到該mutex管理塊的等待隊(duì)列上(S605)。與等待隊(duì)列相連接是為了表示處于哪個(gè)mutex的鎖定解除等待(哪個(gè)資源的專用狀態(tài)解除等待)。再者,mutex控制部17調(diào)用調(diào)度處理S(S606)。這樣,該時(shí)間段即使在分配時(shí)間的過(guò)程中,也能強(qiáng)制切換到下一時(shí)間段上(參見(jiàn)圖7)。
而且,在S604中,不用執(zhí)行標(biāo)記無(wú)效,代之可以把時(shí)間段信息的指針變更為指向B類任務(wù)的執(zhí)行隊(duì)列起始地址。這樣,B類任務(wù)即使在該時(shí)間段也能執(zhí)行。
若判斷結(jié)果是B類(優(yōu)先度不是0)(S603否),則mutex控制部17把調(diào)用元的任務(wù)的任務(wù)管理塊從執(zhí)行隊(duì)列中取出(S607)。這樣把該任務(wù)從調(diào)度對(duì)象中除去。再者,為了表示等待哪個(gè)資源的專用狀態(tài)被解除,把上述任務(wù)管理塊增加到mutex管理塊的等待隊(duì)列內(nèi)(S608)。并且,通過(guò)調(diào)用任務(wù)切換處理S1,切換到下一順序的任務(wù)(S609)。這樣,在時(shí)間段的分配時(shí)間的剩余時(shí)間內(nèi)執(zhí)行下一順序的任務(wù)(參見(jiàn)圖6)。
<4、mutex鎖定解除處理>
圖13是詳細(xì)示出mutex控制部17進(jìn)行mutex鎖定處理的流程圖。該處理是圖8和圖9所示的鎖定解除處理R,是當(dāng)執(zhí)行中的任務(wù)結(jié)束對(duì)一個(gè)資源的存取時(shí),由該執(zhí)行中的任務(wù)調(diào)用的處理。
當(dāng)被調(diào)用時(shí),mutex控制部17從與該資源相對(duì)應(yīng)的mutex管理塊的等待隊(duì)列中取出開(kāi)頭的任務(wù)管理塊(S701),根據(jù)取出的任務(wù)管理塊內(nèi)的優(yōu)先度來(lái)判斷處于等待狀態(tài)的任務(wù)的種類(S702)。mutex控制部17若優(yōu)先度為O(A類),則將取出的任務(wù)管理塊所對(duì)應(yīng)的時(shí)間段信息中的執(zhí)行標(biāo)記設(shè)定為1(有效)(S703)。取出的任務(wù)管理塊所對(duì)應(yīng)的時(shí)間段信息,例如在執(zhí)行標(biāo)記為0的時(shí)間段信息所連接的任務(wù)管理塊中,通過(guò)檢索具有與取出的任務(wù)管理信息相同的任務(wù)信息的任務(wù)管理塊,加以確定即可。再者,mutex控制部17在該mutex管理塊內(nèi)的鎖定變量中寫入0(使其成為鎖定解除狀態(tài))(S705)。
并且,如果從等待隊(duì)列中取出的任務(wù)管理塊的優(yōu)先度不是0(B類),那么,mutex控制17把該任務(wù)管理塊增加到B類的執(zhí)行隊(duì)列中。向執(zhí)行隊(duì)列中的增加,是在從開(kāi)頭起按優(yōu)先度高的順序進(jìn)行排列的位置上增加(S704),在該mutex管理塊內(nèi)的鎖定變量中寫入0。
這樣,處于等待狀態(tài)的任務(wù)返回到能夠執(zhí)行狀態(tài),所以,變成調(diào)度對(duì)象,在下次處于執(zhí)行狀態(tài)時(shí)可以再次進(jìn)行資源的鎖定操作。
如以上說(shuō)明,根據(jù)本發(fā)明實(shí)施方式的程序執(zhí)行裝置,A類的任務(wù)按照1對(duì)1來(lái)分配時(shí)間段的結(jié)果,在一個(gè)周期內(nèi)一定能被選擇執(zhí)行,所以能繼續(xù)保證處理性能。另一方面,B類任務(wù)按照多對(duì)1來(lái)分配一個(gè)時(shí)間段的結(jié)果,不能繼續(xù)保證處理性能,而從優(yōu)先度高的開(kāi)始執(zhí)行。其結(jié)果,程序員對(duì)于必須繼續(xù)滿足處理性能的任務(wù),也不必考慮優(yōu)先度,僅將其分成A類即可,對(duì)于不要求處理性能的任務(wù),分成B類即可。這樣,不必對(duì)全部任務(wù)單獨(dú)規(guī)定優(yōu)先度,容易進(jìn)行為確保處理性能用的程序設(shè)計(jì),能確保程序設(shè)計(jì)的靈活性。
而且,在上述實(shí)施方式中,說(shuō)明了分配時(shí)間指定包括在任務(wù)信息中的例子,但也可以用這樣的結(jié)構(gòu)任務(wù)接受部11從外部接受分配時(shí)間指定。并且,在沒(méi)有分配時(shí)間指定的情況下,也可以作為已定的分配時(shí)間。
并且,對(duì)于A類任務(wù),一個(gè)任務(wù)分配了一個(gè)時(shí)間段,但也可以對(duì)1個(gè)任務(wù)分配2個(gè)以上的時(shí)間段。
再者,對(duì)于B類任務(wù),對(duì)多個(gè)任務(wù)分配一個(gè)時(shí)間段,但也可以分配固定的2個(gè)以上的時(shí)間段中的某一個(gè)。例如,也可以是把優(yōu)先度為奇數(shù)的任務(wù)分配給時(shí)間段A,把偶數(shù)的任務(wù)分配給時(shí)間段B。
并且,也可以是在mutex管理塊內(nèi),設(shè)置用于記錄任務(wù)名稱的所有任務(wù)欄,當(dāng)鎖定被解除時(shí),把所有任務(wù)欄改寫成從隊(duì)列中取出的任務(wù)名稱,使鎖定變量仍保持有效狀態(tài)。在此情況下,所有任務(wù)欄內(nèi)所存儲(chǔ)的任務(wù),可以不進(jìn)行鎖定操作,使其能切實(shí)使用資源。
最后,圖14示出程序執(zhí)行裝置的變形例,與圖1所示的程序執(zhí)行裝置的結(jié)構(gòu)相比較,不同點(diǎn)是增加了在切換時(shí)間段的同時(shí)能夠進(jìn)行切換的8個(gè)寄存器組RS0~RS7。
一個(gè)寄存器組與一個(gè)時(shí)間段相對(duì)應(yīng),保存任務(wù)的前后關(guān)系。
B類的多個(gè)任務(wù)與一個(gè)寄存器組相對(duì)應(yīng),所以在切換到A類任務(wù)的時(shí)間段時(shí),任務(wù)調(diào)度部10和上述實(shí)施方式一樣,對(duì)寄存器組RS0進(jìn)行保存和復(fù)位。
A類任務(wù)與一個(gè)寄存器組相對(duì)應(yīng),所以切換到A類任務(wù)的時(shí)間段上時(shí),任務(wù)調(diào)度部10進(jìn)行寄存器組的切換來(lái)代替前后關(guān)系的保存和復(fù)位,在此情況下不需要前后關(guān)系的保存和復(fù)位,所以,能使任務(wù)切換高速化。因此,周期寄存器18的周期和時(shí)間段的分配時(shí)間能縮短到極小。例如A類時(shí)間段時(shí)間能縮短到保存和復(fù)位所需的時(shí)間長(zhǎng)短,能縮短一個(gè)周期。
而且,可以是這種結(jié)構(gòu)圖14的寄存器組的數(shù)可以是任意個(gè)數(shù),在時(shí)間段的個(gè)數(shù)多于寄存器組的數(shù)的情況下,例如,寄存器組的某一個(gè)由多個(gè)時(shí)間段來(lái)兼用,對(duì)該寄存器組,在時(shí)間段切換時(shí),進(jìn)行前后關(guān)系的保存和復(fù)位。
并且,在圖14中寄存器組的數(shù)也可以定為2。在此情況下,也可以將寄存器組之一作為執(zhí)行中的任務(wù)所使用的表面寄存器組;另一個(gè)作為將下次執(zhí)行的任務(wù)的前后關(guān)系通過(guò)后臺(tái)處理而復(fù)位用的里面寄存器組。若采用這種結(jié)構(gòu),則可以利用空閑狀態(tài),通過(guò)后臺(tái)處理使前后關(guān)系復(fù)位,通過(guò)高效地切換里面寄存器組和表面寄存器組這2個(gè)寄存器組,能實(shí)現(xiàn)高速化。
再者,當(dāng)寄存器組的個(gè)數(shù)為2時(shí),存在通過(guò)鎖定解除從等待狀態(tài)返回到可執(zhí)行狀態(tài)的任務(wù),在該任務(wù)是下次執(zhí)行的任務(wù)的情況下,返回到背后寄存器組的前后關(guān)系可能不同于下次執(zhí)行的任務(wù)的前后關(guān)系。對(duì)此可采用以下結(jié)構(gòu)。也就是說(shuō),在鎖定解除處理(參見(jiàn)圖13)中,在S705的緊前面,增加這樣一個(gè)步驟在該任務(wù)的任務(wù)管理塊內(nèi)設(shè)定一種通知標(biāo)記,用于通知存在從等待狀態(tài)恢復(fù)到可執(zhí)行狀態(tài)的任務(wù),在調(diào)度處理(參見(jiàn)圖10)中,在S411的緊前面增加這樣的步驟如果通知標(biāo)記表示是從等待狀態(tài)返回的任務(wù),則使該任務(wù)的前后關(guān)系恢復(fù)到背面寄存器組之后,切換寄存器組的里面和表面。
以上,用附圖和實(shí)施方式詳細(xì)說(shuō)明了本發(fā)明,但顯然可做出上述以外的各種變更和修改,因此,不脫離本發(fā)明范圍的其他變更和修改,均可解釋為屬于本發(fā)明。
權(quán)利要求
1.一種任務(wù)切換裝置,在處理器中通過(guò)切換時(shí)間段來(lái)切換分配到時(shí)間段的任務(wù)的執(zhí)行,其特征在于,具有分配裝置,把第1類的多項(xiàng)任務(wù)都分配到一個(gè)時(shí)間段,把與第1類不同的第2類的多項(xiàng)任務(wù)分配到一個(gè)特定的時(shí)間段;任務(wù)選擇裝置,在切換到上述特定的時(shí)間段以外的時(shí)間段時(shí),選擇已分配到該時(shí)間段的任務(wù),在切換到上述特定的時(shí)間段時(shí),從第2類的多個(gè)任務(wù)中選擇一個(gè)任務(wù)。
2.如權(quán)利要求1所述的任務(wù)切換裝置,其特征在于上述第2類任務(wù)具有優(yōu)先度,上述任務(wù)選擇裝置在第2類的多項(xiàng)任務(wù)中按照優(yōu)先度選擇一項(xiàng)任務(wù)。
3.如權(quán)利要求2所述的任務(wù)切換裝置,其特征在于上述分配裝置,從預(yù)定的一個(gè)周期的時(shí)間中減去分配第1類任務(wù)的時(shí)間段的合計(jì)時(shí)間,將剩余時(shí)間作為上述特定時(shí)間段的時(shí)間。
4.如權(quán)利要求3所述的任務(wù)切換裝置,其特征在于上述分配裝置每次將第1類新任務(wù)分配到時(shí)間段時(shí),再次計(jì)算上述剩余時(shí)間,作為上述特定時(shí)間段的時(shí)間。
5.如權(quán)利要求1所述的任務(wù)切換裝置,其特征在于上述第1類任務(wù)是具有分配時(shí)間的指定的任務(wù),上述分配裝置在欲增加第1類的新任務(wù)時(shí),如果已分配的任務(wù)的分配時(shí)間的合計(jì)和新任務(wù)的分配時(shí)間的總和超過(guò)一周期的時(shí)間,則拒絕該新任務(wù)的時(shí)間段分配。
6.如權(quán)利要求1所述的任務(wù)切換裝置,其特征在于,還具有存儲(chǔ)裝置,存儲(chǔ)鎖定信息,該鎖定信息表示是否因某一任務(wù)對(duì)可由任務(wù)存取的資源的存取而使該資源處于鎖定狀態(tài);以及,變更裝置,在執(zhí)行中的任務(wù)欲存取鎖定狀態(tài)的資源時(shí),把該任務(wù)從可執(zhí)行狀態(tài)變更為等待狀態(tài),在該資源鎖定狀態(tài)被解除時(shí)把等待狀態(tài)的任務(wù)變更為可執(zhí)行狀態(tài),上述任務(wù)選擇裝置把處于等待狀態(tài)的任務(wù)從選擇對(duì)象中排除。
7.如權(quán)利要求6所述的任務(wù)切換裝置,其特征在于,還具有轉(zhuǎn)移裝置,在第1類和第2類任務(wù)中沒(méi)有一個(gè)可執(zhí)行狀態(tài)的任務(wù)時(shí),使上述處理器轉(zhuǎn)移到省電狀態(tài)。
8.如權(quán)利要求1~7項(xiàng)中任一項(xiàng)所述的任務(wù)切換裝置,其特征在于上述處理器至少具有2個(gè)用于保存任務(wù)的前后關(guān)系的寄存器組,上述任務(wù)切換裝置還具有切換裝置,該切換裝置把寄存器組中的一個(gè)供給執(zhí)行中的任務(wù)使用,在另一個(gè)寄存器組中通過(guò)后臺(tái)處理使下一次應(yīng)執(zhí)行的任務(wù)的前后關(guān)系復(fù)原,當(dāng)切換時(shí)間段時(shí),切換寄存器組。
9.一種任務(wù)切換裝置,通過(guò)切換分配任務(wù)的時(shí)間段來(lái)切換應(yīng)在處理器中執(zhí)行的任務(wù),其特征在于,具有第1生成裝置,對(duì)具有分配時(shí)間的指定的第1類任務(wù),為一個(gè)任務(wù)分配一個(gè)時(shí)間段,生成時(shí)間段信息,該時(shí)間段信息包含與每一該時(shí)間段對(duì)應(yīng)的任務(wù)的分配時(shí)間;第2生成裝置,對(duì)具有優(yōu)先度的第2類任務(wù),把多個(gè)任務(wù)分配到特定的一個(gè)時(shí)間段,生成一個(gè)時(shí)間段信息,該信息包括特定的時(shí)間段的分配時(shí)間和優(yōu)先度;第3生成裝置,對(duì)每一個(gè)分配到時(shí)間段的任務(wù)生成包含任務(wù)的地址的任務(wù)管理信息;存儲(chǔ)裝置,將已生成的時(shí)間段信息和任務(wù)管理信息相對(duì)應(yīng)地進(jìn)行存儲(chǔ);選擇裝置,在每一個(gè)周期內(nèi)至少選擇一個(gè)存儲(chǔ)在存儲(chǔ)裝置中的時(shí)間段信息;以及控制裝置,在選擇了分配有第1類任務(wù)的時(shí)間段信息時(shí),執(zhí)行與該時(shí)間段信息相對(duì)應(yīng)的任務(wù)管理信息所示的任務(wù),在選擇了分配有第2類任務(wù)的時(shí)間段信息時(shí),從該時(shí)間段信息所對(duì)應(yīng)的多個(gè)任務(wù)管理信息中按照優(yōu)先度選擇一個(gè),執(zhí)行所選擇的任務(wù)管理信息所示的任務(wù)。
10.如權(quán)利要求9所述的任務(wù)切換裝置,其特征在于上述存儲(chǔ)裝置把第2類任務(wù)的任務(wù)管理信息作為按優(yōu)先度順序排列的隊(duì)列進(jìn)行存儲(chǔ);上述控制裝置選擇與隊(duì)列的起始任務(wù)管理信息相對(duì)應(yīng)的任務(wù)。
11.如權(quán)利要求10所述的任務(wù)切換裝置,其特征在于上述第2生成裝置把上述周期與第1類的全部任務(wù)分配時(shí)間合計(jì)的差分,作為特定時(shí)間段的分配時(shí)間設(shè)定到上述特定時(shí)間段信息中。
12.如權(quán)利要求11所述的任務(wù)切換裝置,其特征在于上述第2生成裝置,在由第1生成裝置每次對(duì)第1類新任務(wù)分配時(shí)間段時(shí),再次計(jì)算上述剩余時(shí)間,作為上述特定時(shí)間段的分配時(shí)間。
13.如權(quán)利要求12所述的任務(wù)切換裝置,其特征在于,上述存儲(chǔ)裝置還存儲(chǔ)鎖定信息,該鎖定信息表示可由任務(wù)存取的資源是否因某一任務(wù)的存取而處于鎖定狀態(tài),上述任務(wù)切換裝置還具有隊(duì)列管理裝置,當(dāng)執(zhí)行中的任務(wù)欲存取鎖定狀態(tài)的資源時(shí),把存儲(chǔ)在存儲(chǔ)裝置中的該任務(wù)的任務(wù)管理信息和時(shí)間段信息的對(duì)應(yīng)關(guān)系分開(kāi),把該任務(wù)管理信息作為等待隊(duì)列進(jìn)行存儲(chǔ),當(dāng)該資源被解除鎖定狀態(tài)時(shí),將等待隊(duì)列內(nèi)的任務(wù)管理信息與時(shí)間段信息相對(duì)應(yīng)地進(jìn)行存儲(chǔ)。
14.如權(quán)利要求13所述的任務(wù)切換裝置,其特征在于,上述處理器至少具有2個(gè)寄存器組,用于保存任務(wù)的前后關(guān)系,上述任務(wù)切換裝置還具有寄存器組切換裝置,把1個(gè)寄存器組供給執(zhí)行中的任務(wù)使用,在另一個(gè)寄存器組中通過(guò)后臺(tái)處理使下一次應(yīng)執(zhí)行的任務(wù)的前后關(guān)系復(fù)原,在切換時(shí)間段時(shí)切換寄存器組。
15.一種任務(wù)切換方法,在處理器中通過(guò)切換時(shí)間段來(lái)切換分配到時(shí)間段的任務(wù)的執(zhí)行,其特征在于,具有以下步驟分配步,把第1類的多項(xiàng)任務(wù)分配到一個(gè)時(shí)間段,把與第1類不同的第2類的多個(gè)任務(wù)分配到一個(gè)特定的時(shí)間段;任務(wù)選擇步,在切換到上述特定的時(shí)間段以外的時(shí)間段時(shí),選擇分配到該時(shí)間段的任務(wù),在切換到上述特定的時(shí)間段時(shí),從第2類的多項(xiàng)任務(wù)中選擇一個(gè)任務(wù)。
16.一種程序,用于在處理器中通過(guò)切換時(shí)間段來(lái)切換分配到時(shí)間段的任務(wù)的執(zhí)行,其特征在于,在所述處理器中執(zhí)行以下步驟分配步,把第1類的多項(xiàng)任務(wù)都分配到一個(gè)時(shí)間段,把與第1類不同的第2類的多個(gè)任務(wù)分配到一個(gè)特定的時(shí)間段;任務(wù)選擇步,在切換后的時(shí)間段不是上述特定的時(shí)間段時(shí),選擇分配到該時(shí)間段的任務(wù),在切換后的時(shí)間段是上述特定的時(shí)間段時(shí),從第2類的多項(xiàng)任務(wù)中選擇一個(gè)任務(wù)并執(zhí)行。
全文摘要
本發(fā)明的任務(wù)切換裝置,按照1對(duì)1把第1類任務(wù)的任務(wù)管理塊(210、220)分別分配給時(shí)間段信息(110、120);按照多對(duì)1把第2類的多個(gè)任務(wù)管理塊(200、201、202)分配給一個(gè)時(shí)間段信息(100),在切換到時(shí)間段信息(100)的時(shí)間段上的情況下,按優(yōu)先度選擇一個(gè)任務(wù)管理塊;在切換到時(shí)間段信息(100)以外的時(shí)間段上的情況下,選擇對(duì)其分配的任務(wù)管理塊,執(zhí)行該任務(wù)。
文檔編號(hào)G06F9/48GK1530834SQ200410039959
公開(kāi)日2004年9月22日 申請(qǐng)日期2004年3月15日 優(yōu)先權(quán)日2003年3月13日
發(fā)明者林邦彥 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社