排程演算法FCFS SJF和優先權排程的介紹和例題

2022-07-16 05:36:12 字數 1416 閱讀 7478

一、先來先服務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...