新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Uc/OS II就緒表(Ready List)分析

        Uc/OS II就緒表(Ready List)分析

        作者: 時間:2016-10-08 來源:網絡 收藏

        就緒表(Ready List)

        本文引用地址:http://www.104case.com/article/201610/305950.htm

        每個任務被賦予不同的優先級等級,從0級到最低優先級OS_LOWEST_PR1O,包括0和OS_LOWEST_PR1O在內(見文件OS_CFG.H)。當uCOS II初始化的時候,最低優先級OS_LOWEST_PR1O總是被賦給空閑任務idle task。注意,最多任務數目OS_MAX_TASKS和最低優先級數是沒有關系的。用戶應用程序可以只有10個任務,而仍然可以有32個優先級的級別(如果用戶將最低優先級數設為31的話)。

        每個任務的就緒態標志都放入就緒表中的,就緒表中有兩個變量OSRedyGrp和OSRdyTbl[]。在OSRdyGrp中,任務按優先級分組,8個任務為一組。OSRdyGrp中的每一位表示8組任務中每一組中是否有進入就緒態的任務。任務進入就緒態時,就緒表OSRdyTbl[]中的相應元素的相應位也置位。就緒表OSRdyTbl[]數組的大小取決于OS_LOWEST_PR1O(見文件OS_CFG.H)。當用戶的應用程序中任務數目比較少時,減少OS_LOWEST_PR1O的值可以降低uCOS II對RAM(數據空間)的需求量。

        為確定下次該哪個優先級的任務運行了,內核調度器總是將OS_LOWEST_PR1O在就緒表中相應字節的相應位置1。OSRdyGrp和OSRdyTbl[]之間的關系見圖3.3,是按以下規則給出的:

        當OSRdyTbl[0]中的任何一位是1時,OSRdyGrp的第0位置1,

        當OSRdyTbl[1]中的任何一位是1時,OSRdyGrp的第1位置1,

        當OSRdyTbl[2]中的任何一位是1時,OSRdyGrp的第2位置1,

        當OSRdyTbl[3]中的任何一位是1時,OSRdyGrp的第3位置1,

        當OSRdyTbl[4]中的任何一位是1時,OSRdyGrp的第4位置1,

        當OSRdyTbl[5]中的任何一位是1時,OSRdyGrp的第5位置1,

        當OSRdyTbl[6]中的任何一位是1時,OSRdyGrp的第6位置1,

        當OSRdyTbl[7]中的任何一位是1時,OSRdyGrp的第7位置1,

        程序清單3.5中的代碼用于將任務放入就緒表。Prio是任務的優先級。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 金坛市| 甘泉县| 衡山县| 大连市| 太和县| 南丹县| 余庆县| 贺兰县| 公安县| 乌恰县| 宁国市| 缙云县| 梧州市| 南雄市| 永德县| 宝兴县| 高州市| 舟山市| 瓦房店市| 济南市| 泰州市| 盘锦市| 磴口县| 元氏县| 德庆县| 鸡泽县| 肇庆市| 察哈| 兴山县| 西畴县| 新巴尔虎左旗| 荣昌县| 湟中县| 九台市| 上饶市| 西藏| 台中县| 密山市| 兰西县| 蒙阴县| 大余县|