利用OS任務(wù)調(diào)度來實(shí)現(xiàn)嵌入式數(shù)據(jù)管理[2]

互聯(lián)網(wǎng)技術(shù) 責(zé)任編輯:hugoholmes 2012-03-19

摘要:1.2使任務(wù)進(jìn)入空閑態(tài)μC/OS通過任務(wù)就緒表OSRdyTbl[prio》3](prio代表任務(wù)優(yōu)先級(jí))中相應(yīng)位清零使相應(yīng)任務(wù)進(jìn)入空閑態(tài),當(dāng)OSRdyTbl[prio》3]中的所有位都為零時(shí),還需將OSRdyGrp的相應(yīng)位清零,代表全組任務(wù)中沒有一個(gè)任務(wù)進(jìn)入就緒態(tài)。1.3查找當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)任務(wù)μC/OS采用查表法查找當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)任務(wù),


1.2  使任務(wù)進(jìn)入空閑態(tài)

μC/OS通過任務(wù)就緒表OSRdyTbl[prio》3](prio代表任務(wù)優(yōu)先級(jí))中相應(yīng)位清零使相應(yīng)任務(wù)進(jìn)入空閑態(tài),當(dāng)OSRdyTbl[prio》3]中的所有位都為零時(shí),還需將OSRdyGrp的相應(yīng)位清零,代表全組任務(wù)中沒有一個(gè)任務(wù)進(jìn)入就緒態(tài)。

1.3  查找當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)任務(wù)

μC/OS采用查表法查找當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)任務(wù),它預(yù)先定義了數(shù)組OSUnMapTbl[]作為查找表,如下:

INT8U const OSUnMapTbl[]={

0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0

};

相應(yīng)的查找程序如下:

High3=OSUnMapTbl[OSRdyGrp];//優(yōu)先級(jí)高3位,即當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)的任務(wù)的組號(hào)

Low3=OSUnMapTbl[OSRdyTbl[High3]];//優(yōu)先級(jí)低3位

prio=(Hign3《3)+Low3;//獲得當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)的任務(wù)

例如:若OSRdyGrp的值為01101000b,則查得OSUnMapTbl[OSRdyGrp]的值是3,它對(duì)應(yīng)于OSRdyGrp中的第3位置1(即當(dāng)前處于就緒態(tài)的較高優(yōu)先級(jí)任務(wù)處于第1組任務(wù)中);若OSRdyTbl[3]的值是11100100b,則查OSUnMapTbl[OSRdyTbl[3]]的值是2,則進(jìn)入就緒態(tài)的較高任務(wù)的優(yōu)先級(jí)prio=3×8+2=26.

從上文的計(jì)算可看出μC/OS查找當(dāng)前較高優(yōu)先級(jí)任務(wù)所花的時(shí)間為常數(shù),與應(yīng)用程序中建立的任務(wù)數(shù)無關(guān),這個(gè)特性是本文實(shí)現(xiàn)新型嵌入式數(shù)據(jù)管理的關(guān)鍵。

[1]  [2]  [3]  [4]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

通信工程師備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

距離2025 通信工程師考試

還有
  • 3
  • 1
  • 2
專注在線職業(yè)教育23年

項(xiàng)目管理

信息系統(tǒng)項(xiàng)目管理師

廠商認(rèn)證

信息系統(tǒng)項(xiàng)目管理師

信息系統(tǒng)項(xiàng)目管理師

學(xué)歷提升

!
咨詢?cè)诰€老師!