一、先來先服務fcfs (first come first serve)
1.思想:
選擇最先進入後備/就緒佇列的作業/程序,入主存/分配cpu
2.優缺點
優點:對所有作業/程序公平,演算法簡單穩定
缺點:不夠靈活,對緊急程序的優先處理許可權不夠,在相同時限下處理任務數量可能更少
二、短作業優先sjf (shortest job first)
1.思想:
可分為搶占式和非搶占式(執行時間越短,優先順序越高)
搶占式優先權,若佇列後續作業/程序的優先順序更高,則它搶占cpu資源,之前執行的作業/程序暫停,開始執行優先順序更高的作業/程序,總結就是當前在cpu中的作業/程序總是執行時間最短,能夠最快完成的
非搶占式優先權,若當前cpu中已經有正在執行的作業/程序,則不會打斷其執行過程,當後備佇列中有多個程序時,下乙個會先執行優先順序高的作業/程序,入主存/分配cpu,總結就是下乙個執行的作業/程序總是在後備佇列中執行時間最短的
2.優缺點
缺點:不夠穩定,演算法更複雜
ps:優先順序排程演算法與此演算法類似,只不過額外指明了作業/程序的優先順序以確定執行先後順序,在此不再贅述
三、舉例
周轉時間 = 完成時刻 - 進入時刻
等待時間 = 完成時刻 - (進入時刻 + 執行時間)
1.fcfs
排程順序:p1 -> p2 -> p3 -> p4
畫個gantt圖助於理解
下方為不同程序進入佇列次序及時間,上方為cpu中程序執行順序表
2.搶占式優先權排程
排程順序:p1 -> p2 -> p4 -> p2 -> p3 -> p1
3.非搶占式sjf
排程順序:p1 -> p2 -> p4 -> p3
優先權排程演算法
include include include include includeusing namespace std define maxn 100 int time 0 定義時間,為全域性變數,第乙個程序到達時為0 typedef structproducer 程序結構體 float rep pr...
動態優先權程序排程演算法
include include define ready 1 define block 2 struct pcb pcb ready queue head null pcb block queue head null 建立了就緒佇列和阻塞佇列,均包含頭結點,以後的節點插入均採取插入排序 void i...
程序排程 高優先權優先
include stdio.h include include define getpch type type malloc sizeof type define null 0 struct pcb ready null,p ready p 為全域性變數 typedef struct pcb pcb...