FOS排程演算法

2021-06-22 16:25:46 字數 823 閱讀 5913

fos排程演算法是基於優先順序任務排程的,對於優先順序任務支援fifo策略。應該說所有真實時的作業系統都支援基於優先順序任務排程。

排程演算法的作用是找出可排程優先順序最高的的任務。

fos 採用乙個

unsignedint型別的變數

task_prio_map,來維護各任務的優先順序情況。任務數有大,優先順序越低。在系統初始化時,建立起每個優先順序煉表頭,每當有任務建立的時候,根據該任務的優先順序把該任務插入相對應的優先順序鍊錶後面。同等優先順序支援

fifo排程方式。

函式是提

tcb*bit_first_one_search(u32 num),取出可以排程最高優先順序任務。

tcb *bit_first_one_search(u32 num)

else

} i++;

} if (old_task->state== 0)

return idle_task;

return old_task;

}

演算法描述,檢查

num某

bit上是否為

1,是檢視該對應優先順序鍊錶上的任務是否可以執行。總是先提取該鍊錶的頭部後面乙個,在其他處理中,同等優先順序不可執行的任務,總是拍到鍊錶後面。

如果該鍊錶上所有的任務不可以執行,就繼續向下查詢

num中下乙個

bit為

1,重複上面操作。到最後,確實沒有可以執行的任務,那就執行舊任務,舊任務也不可以執行,那就執行空閒任務。

FOS訊號量管理

一般的rtos會通過初始化訊號量建立相對應的阻塞鍊錶。這樣做會增加使用資源。fos主要通過semaphore阻塞佇列管理訊號量。把被semaphore阻塞的任務掛在該鍊錶上。而且自始至終都使用一條鍊錶。fos在系統初始化時候需要初始化該鍊錶。1 訊號量初始化 void sem init sem se...

LVS排程演算法(上) 靜態排程演算法

lvs的排程方法有十幾中,每種方法的排程標準和適用場景不同。大體有兩大類,分別為固定排程方法或稱為靜態排程方法,另一類是動態排程方法。常用的具體演算法有十種。1 輪詢排程 rr 將所有請求平均的分發到每個集群節點上,即輪流排程。2 加權輪詢排程 wrr 由於不同的伺服器效能不同,因此要考慮讓效能高的...

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...