【操作系統】調度算法

調度算法

在操作系統中存在着多種調度算法,有的適於作業調度,有的適於進程調度,也有的調度算法對二者都可用。

先來先服務

FCFS(First Come First Serve)

  • 規則

按照作業/進程到達的先後順序進行服務

用於作業調度時,考慮的是哪個作業先到達後備隊列;用 於進程調度時,考慮的是哪個進程先到達 就緒隊列

屬於非搶佔式算法

優點:公平、算法實現簡單

缺點:排在長作業(進程)後面的短作業需要等待很長時間,帶權週轉時間很大,對短作業來說用戶體驗不好。即, FCFS算法對長作業有利,對短作業不利

不會產生某進程/作業長期得不到服務(飢餓情況)

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用先來先服務調度算法,計算各 進程的等待時間、平均等待時間、週轉時間、平均週轉時間、帶權週轉時間、平均帶權週轉時間。

進程 到達時間 運行時間
A 0 7
B 2 4
C 4 1
D 5 4

根據先來先服務,按照先後順序調度。
調度順序:A -> B -> C -> D

週轉時間=完成時間-到達時間

A:7-0=7、B:11-2=9、C:12-4=8、D:16-5=11

帶權週轉時間=週轉時間/運行時間

A:7/7=1、B:9/4=2.25、C:8/1=8、D:11/4=2.75

等待時間=週轉時間–運行時間

A:7-7=0、B:9-4=5、C:8-1=7、D:11-4=7

平均週轉時間

(7+9+8+11)/4=8.75

平均帶權週轉時間

(1+2.25+8+2.75)/4=3.5

平均等待時間

(0+5+7+7)/4=4.75

短作業優先

SJF(Shortest Job First)

先來先服務算法非常公平,但是如果我們的服務時間很短,但由於到達較晚,等待時間非常的長,這對短作業來說用戶體驗不好。

來看看短作業優先算法

  • 規則

最短的作業/進程優先得到服務(所謂“最短”,是指要求服務時間最短)
即可用於作業調度,也可用於進程調度。用於進程調度時 稱爲“短進程優先(SPF,ShortestProcessFirst)算法”

SJF和SPF是非搶佔式的算法。但是也有搶佔式的版本——最短剩餘時間優先算法(SRTN,ShortestRemainingTimeNext)

優點:“最短的”平均等待時間、平均週轉時間

缺點:不公平。對短作業有利,對長作業不利。如果源源不斷地有短作業/進程到來,可能使長作業/進 程長時間得不到服務,產生“飢餓”現象。如果一直得不 到服務,則稱爲“餓死”

我們使用非搶佔式短作業優先調度算法計算一下上面的題:

最短的作業優先得到服務
調度順序爲:A -> C -> B -> D

週轉時間=完成時間-到達時間

A:7-0=7、B:12-2=10、C:8-4=4、D:16-5=11

帶權週轉時間=週轉時間/運行時間

A:7/7=1、B:10/4=2.5、C:4/1=4、D:11/4=2.75

等待時間=週轉時間–運行時間

A:7-7=0、B:10-4=6、C:4-1=3、D:11-4=7

平均週轉時間

(7+4+10+11)/4=8

平均帶權週轉時間

(1+4+2.5+2.75)/4=2.56

平均等待時間

(0+3+6+7)/4=4

相比於先來先服務算法,平均週轉時間、平均帶權週轉時間、平均等待時間更低了。

我們使用搶佔式短作業優先調度算法(也稱:最短剩餘時間優先算法(SRTN,ShortestRemainingTimeNext))計算一下上面的題:

高響應比優先

HRRN(Highest Response Ratio Next)

時間片輪轉

RR(Round-Robin)

優先級調度

多級反饋隊列調度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章