UCOSii核心任務調度

       1. 爲系統中處於就緒狀態的任務分配CPU是多任務操作系統的核心工作。這項工作涉及兩項技術;一是判斷哪些任務處於就緒狀態;二十進行任務調度。所謂任務調度,就是通過一個算法在就緒任務中確定應該馬上運行的任務,操作系統用於負責這項工作的程序模塊叫做調度器。

  任務就緒表結構:位圖,系統中的每個任務都在這個位圖中佔據一位,該位置的狀態(1或0)就表示任務是否處於就緒狀態。

                                                                           INT8U OSRdyTbl[ ]

OSRdyTbl每個數組元素描述了8個任務的就緒狀態,於是這8個任務就可以看成一個任務組。爲了便於對就緒表的查找,定義了一個數據類型爲INT8U的變量OSRdyGrp,並使該變量的每一個位對應OSRdyTbl就緒表的任務組,如果某任務組中有任務就緒,則在變量OSRdyGrp裏把該任務組所對應的位置爲1,否則置0.例如,如果OSRdyGrp=10000001,那麼意味着OSRdyGrp[0],OSRdyGrp[7]任務組中有任務就緒。

由於變量OSRdyGrp有8個二進制位,每位對應OSRdyTbl[ ]數組中的一個元素,每個元素又可以記錄8個任務的就緒狀態,因此最多可以管理8*8=64個任務。

   由於優先級是一個單字節的數字,而且最大值不會超過63,即二進制形式的00111111.因此,可以把優先級別看成是一個6位的二進制數,這樣可以用高三位(D5D4D3)來指明變量OSRdyGrp的具體數據位,用第三位(D2D1D0)來指明變量OSRdyTbl。

例如優先級別prio=30,30=00 011 110,於是可知應該在OSRdyTbl[3]的D6位置1,同時要把變量OSRdyGrp的D3位置1。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章