調度算法
一、先來先服務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中進程執行順序表
平均周轉時間:Ta = (8 + 11 + 19 + 23) / 4 = 15.25s
平均等待時間:Tw = (0 + 7 + 10 + 18) / 4 = 8.75s
2.搶占式優先權調度
調度順序:P1 -> P2 -> P4 -> P2 -> P3 -> P1
平均周轉時間:Ta = (26 + 9 + 17 + 5) / 4 = 14.25s
平均等待時間:Tw = (18 + 5 + 8 + 0) / 4 = 7.75s
3.非搶占式SJF
調度順序:P1 -> P2 -> P4 -> P3
平均周轉時間:Ta = (8 + 11 + 24 + 14) / 4 = 14.25s
平均等待時間:Tw = (0 + 7 + 15 + 9) / 4 = 7.75s