uCOS III 5 分配時間片

2021-10-04 05:23:06 字數 1105 閱讀 7890

其實時間片就是乙個計數單位,每執行乙個系統時鐘週期就是乙個時間片,通過給每個任務分配若干任務片的方式精準控制每個任務的執行時間

加入timequanta表示任務所需時間片數,以及timequantactr用於記錄任務還剩下多少時間片在tcb中

需要加入乙個時間片排程函式

void

os_schedroundrobin

(os_rdy_list *p_rdy_list)

/* 如果是空閒任務,也退出 */

if(p_tcb ==

&osidletasktcb)

/* 時間片自減 */

if(p_tcb->timequantactr >

(os_tick)0)

/* 時間片沒有用完,則退出 */

if(p_tcb->timequantactr >

(os_tick)0)

/* 如果當前優先順序只有乙個任務,則退出 */

if(p_rdy_list->nbrentries <

(os_obj_qty)2)

/* 時間片耗完,將任務放到鍊錶的最後乙個節點 */

os_rdylistmoveheadtotail

(p_rdy_list)

;/* 重新獲取任務節點 */

p_tcb = p_rdy_list->headptr;

/* 過載預設的時間片計數值 */

p_tcb->timequantactr = p_tcb->timequanta;

/* 退出臨界段 */

cpu_critical_exit()

;}

每執行完乙個系統時鐘週期都應該更新一下時間片,可以選擇和時基列表一同更新,所以可以放在時基週期處理函式中

而時間片的初始化需要在任務建立時就完成

p_tcb->timequanta    = time_quanta;

#if os_cfg_sched_round_robin_en > 0u

p_tcb->timequantactr = time_quanta;

#endif

建立空閒任務時也需要加入乙個時間片的形參

RQNOJ 140 分配時間

小王參加的考試是幾門科目的試卷放在一起考,一共給t分鐘來做。他現在已經知道每門科目花的時間和得到的分數的關係,還有寫名字要的時間 他寫自己的名字很慢 請幫他算一下他最高能得幾分。總分一定時,第一門科目成績盡量高,第一門科目成績也一樣時,第二門科目成績盡量高 以次類推。如果放棄某一門的考試 花的時間為...

動態規劃 RQ140 分配時間

小王參加的考試是幾門科目的試卷放在一起考,一共給t分鐘來做。他現在已經知道每門科目花的時間和得到的分數的關係,還有寫名 字要的時間 他寫自己的名字很慢 請幫他算一下他最高能得幾分。總分一定時,第一門科目成績盡量高,第一門科目成績也一樣時,第二門科目成績盡量 高 以次類推。如果放棄某一門的考試 花的時...

11 2 分配記憶體

這篇主要說一說c語言中幾個分配記憶體的函式 malloc calloc 和free 內容在書12.4章.c語言可以通過庫函式分配和管理記憶體.下面的 都為變數分配了一些記憶體.float f char str this is a string int arr 100 靜態資料在程式載入記憶體時分配記...