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演算法比較有利於長作業 程序 而不利於短...