ucos iii時間片輪轉只能在同優先級的任務間有效果

ucos iii如何使用時間片輪轉調度算法

(2016-07-15 15:05:47)
   
第一步:在mian()函數中打開條件編譯#if OS_CFG_SCHED_ROUND_ROBIN_EN  
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  
       #endif
         其中OSSchedRoundRobinCfg(DEF_ENABLED,1,&err); 
 函數參數一:DEF_ENABLED使能調度輪轉法,DEF_DISBLED失能調輪轉法。
        參數二:用來設置時間片長度。時間長度 = 參數值*時間節拍。其中時間節拍與系統時間頻率OS_CFG_TICK_RATE_HZ,互爲倒數。
第二步:創建任務時,通過設置(OS_TICK  )參數,來設置任務擁有幾個時間片。
時間片輪轉調度算法的作用及原理:
作用:用於相同優先級任務的切換。
原理:在ucos iii中任務優先級是依靠一個數組變量來實現的,數組變量的每一位代表一個優先級。當某一位爲1時,代表當前優先級有任務已經處於就緒狀態。等待CPU分配。當兩個處於同一優先級的任務同時就緒時,則取任務鏈表中的第一個任務執行(每個優先級都擁有一個任務鏈表,該鏈表中任務的優先級均相同)。當該任務時間片用完時,將該任務插入任務鏈表尾部。由此就能完成時間片輪轉調度了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章