μC/OS2Ⅱ中優(yōu)先級(jí)調(diào)度算法的改進(jìn)及實(shí)現(xiàn)
引 言
實(shí)時(shí)系統(tǒng)是對(duì)時(shí)間有特殊要求的系統(tǒng),系統(tǒng)運(yùn)行結(jié)果的正確性不僅要求系統(tǒng)的邏輯正確,而且依賴于運(yùn)行結(jié)果產(chǎn)生的時(shí)間。尤其是硬實(shí)時(shí)系統(tǒng),具有明確的實(shí)時(shí)參數(shù),如果在某個(gè)限定的時(shí)刻前不能完成任務(wù)將導(dǎo)致整個(gè)應(yīng)用的失敗。μC/OS2 Ⅱ是一個(gè)為實(shí)時(shí)嵌入式應(yīng)用而設(shè)計(jì)的搶占式多任務(wù)的實(shí)時(shí)操作系統(tǒng),全部μC/OS2Ⅱ的函數(shù)調(diào)用與服務(wù)執(zhí)行時(shí)間是可知的。在μC/OS2Ⅱ中,涉及到的重要概念有實(shí)時(shí)內(nèi)核、任務(wù)間的通信、任務(wù)切換與調(diào)度、任務(wù)優(yōu)先級(jí)分配、任務(wù)間的競(jìng)爭(zhēng)、死鎖等。其中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),為每個(gè)任務(wù)分配CPU時(shí)間,并負(fù)責(zé)任務(wù)之間的通信。μC/OS2Ⅱ內(nèi)核最多可以管理64個(gè)任務(wù),其中系統(tǒng)保留了8個(gè)任務(wù),用戶最多可以有56個(gè)應(yīng)用任務(wù)。因此,當(dāng)工程的復(fù)雜性增大,在μC /OS2Ⅱ操作系統(tǒng)上運(yùn)行的任務(wù)數(shù)目不斷增加時(shí),如果任務(wù)數(shù)目超過64個(gè),就必須換用其他的開發(fā)平臺(tái),這樣就可能造成大量的前期開發(fā)工作作廢。我們考慮到這種情況,根據(jù)μC/OS2Ⅱ本身的任務(wù)可擴(kuò)展性,在原有的優(yōu)先級(jí)調(diào)度算法基礎(chǔ)上,提出了兩種可行的大量增加可管理任務(wù)的算法。
基于優(yōu)先級(jí)的搶占式調(diào)度算法
當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式內(nèi)核。μC/OS2Ⅱ的實(shí)時(shí)內(nèi)核就是占先式內(nèi)核。其特點(diǎn)是能夠確定最高優(yōu)先級(jí)的就緒任務(wù)什么時(shí)候可以執(zhí)行,可以得到CPU的控制權(quán),從而使任務(wù)級(jí)響應(yīng)時(shí)間得以最優(yōu)化。相應(yīng)地,μC/OS2Ⅱ內(nèi)核采用的是基于優(yōu)先級(jí)的搶占式調(diào)度策略。系統(tǒng)為每個(gè)任務(wù)分配一個(gè)優(yōu)先級(jí),最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。
μC/OS2Ⅱ中優(yōu)先級(jí)調(diào)度算法的第一種改進(jìn)方法
為增加μC/OS2Ⅱ內(nèi)核可管理任務(wù)的數(shù)目,該算法利用μC/OS2Ⅱ原有的優(yōu)先級(jí)判定表格,重新定義了存放任務(wù)優(yōu)先級(jí)的字節(jié),并重新建立任務(wù)就緒表,把64個(gè)任務(wù)擴(kuò)充到256個(gè)任務(wù),最后給出了新的最高就緒任務(wù)的查找算法。
對(duì)優(yōu)先級(jí)字節(jié)的改動(dòng)和規(guī)定
在 μC/OS2Ⅱ中,原有的基于64個(gè)任務(wù)調(diào)度的優(yōu)先級(jí)調(diào)度算法分別用3個(gè)比特位來定位任務(wù)優(yōu)先級(jí)在就緒表(readylist) 中的行和列,即0~2位標(biāo)識(shí)該任務(wù)在總就緒表中的列信息,3~5位標(biāo)識(shí)該任務(wù)在就緒表中的行信息。因此,存放任務(wù)優(yōu)先級(jí)的字節(jié)中8個(gè)比特位只會(huì)用到6位,而有兩個(gè)比特位空閑。該算法直接擴(kuò)展定位就緒任務(wù)優(yōu)先級(jí)在就緒表中位置的行和列信息的比特位,使其能夠區(qū)分256個(gè)不同的任務(wù)優(yōu)先級(jí)。擴(kuò)展后的算法規(guī)定任務(wù)優(yōu)先級(jí)字節(jié)的定義如圖1所示。
評(píng)論