王道操作系统考研笔记——2.1.9 调度算法
2.1.9 調(diào)度算法
知識總覽
學(xué)習(xí)各種調(diào)度算法的思路
- 算法思想
- 算法規(guī)則
- 這種調(diào)度算法是用于作業(yè)調(diào)度還是進程調(diào)度?
- 搶占式或是非搶占式
- 優(yōu)點和缺點
- 是否會導(dǎo)致饑餓(某進程/作業(yè)長期得不到服務(wù))
2.1.9.1 先來先服務(wù)
| 英文名 | FCFS,即First Come First Serve |
| 算法思想 | 主要從公平的角度來考慮,類似于我們生活上排隊買東西的例子 |
| 用于進程/作業(yè)調(diào)度 | 用于作業(yè)調(diào)度時,考慮的是哪個作業(yè)先到達后備隊列;用于進程調(diào)度時,考慮的是哪個進程先到達就緒隊列 |
| 是否可搶占? | 非搶占式算法 |
| 優(yōu)缺點 | 優(yōu)點:公平、算法實現(xiàn)簡單;缺點:排在長作業(yè)后面的短作業(yè)需要等待很長時間,帶權(quán)周轉(zhuǎn)時間很大,對短作業(yè)來說用戶體驗不好。 |
| 是否會導(dǎo)致饑餓 | 否 |
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用先來先服務(wù)調(diào)度算法,計算各進程的等待時間、平均等待時間、周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間。
周轉(zhuǎn)時間 = 完成時間-到達時間
P1 = 7-0 = 7 ; P2 = 11- 2 = 9 ; P3 = 12-4 = 8 ; P4 = 16-5 =11
帶權(quán)周轉(zhuǎn)時間 = 周轉(zhuǎn)時間/運行時間
P1 = 7/7 = 1;P2 = 9/4 = 2.25 ; P3 = 8/1 = 8 ; P4 = 11/4 = 2.75
等待時間 = 周轉(zhuǎn)時間-運行時間
P1 = 7-7 = 0 ;P2 = 9-4 = 5 ; P3 = 8-1 = 7 ; P4 = 11-4 = 7
這里需要注意的是,本例中的進程都是純計算型的過程,一個進程到達后要么在等待,要么在運行。如果是又有計算、又有I/O操作的過程,其等待時間就是周轉(zhuǎn)時間-運行時間-I/O操作的時間。
平均周轉(zhuǎn)時間 = (7+9+8+11)/4 = 8.75
平均帶權(quán)周轉(zhuǎn)時間 = (1+2.25+8+2.75)/4 = 3.5
平均等待時間 = (0+5+7+7)/4 = 4.75
2.1.9.2 短作業(yè)優(yōu)先
| 英文名 | SJF,即Shortest Job First |
| 算法思想 | 追求最少的平均等待時間,最少的平均周轉(zhuǎn)時間、最少的平均帶權(quán)周轉(zhuǎn)時間。 |
| 用于進程/作業(yè)調(diào)度 | 既可用于作業(yè)調(diào)度,也可用于進程調(diào)度。用于進程調(diào)度時被稱為“短作業(yè)優(yōu)先(SPF)算法” |
| 是否可搶占? | SJF和SPF是非搶占式的算法。但是也有搶占式的版本——最短剩余時間優(yōu)先算法(SRTN,Shortest Remaining Time Next) |
| 優(yōu)缺點 | 優(yōu)點:“最短的”平均等待時間、平均周轉(zhuǎn)時間。缺點:不公平。對短作業(yè)有利,對長作業(yè)不利。可能產(chǎn)生饑餓現(xiàn)象。另外,作業(yè)/進程的運行時間是由用戶提供的,并不一定真實,不一定能做到真正的短作業(yè)優(yōu)先 |
| 是否會導(dǎo)致饑餓 | 會。如果源源不斷地有短作業(yè)/進程到來,可能使長作業(yè)/進程長時間得不到服務(wù),產(chǎn)生“餓死”現(xiàn)象。 |
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用非搶占式的短作業(yè)優(yōu)先調(diào)度算法,計算各進程的等待時間、平均等待時間、周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間。
相比于FCFS算法,顯然SPF算法的平均等待/周轉(zhuǎn)/帶權(quán)周轉(zhuǎn)時間都要更低。
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用搶占式的短作業(yè)優(yōu)先調(diào)度算法,計算各進程的等待時間、平均等待時間、周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間。
注:搶占式的短作業(yè)優(yōu)先算法又稱為最短剩余時間優(yōu)先算法(SRTN)。
相比于前兩個算法,這個算法的指標(biāo)更低。
經(jīng)過上面的學(xué)習(xí),我們可以知道一些知識。但是由于教材的不一,我們還有幾個小細(xì)節(jié)需要注意:
- 如果題目中沒有特別說明,所提到的“短作業(yè)/進程優(yōu)先算法”默認(rèn)是非搶占式的。
- 很多書上都會說“SJF調(diào)度算法的平均等待時間、平均周轉(zhuǎn)時間最少”。嚴(yán)格來說這個表述的錯誤的,不嚴(yán)謹(jǐn)?shù)摹=?jīng)過上面的學(xué)習(xí)我們可以知道最短剩余時間優(yōu)先算法所得到的指標(biāo)是最少的。如果仍然要用這里的表述,那我們可以加上前提條件:在所有進程都幾乎同時到達時,采用SJF調(diào)度算法的平均等待時間、平均周轉(zhuǎn)時間最少。
- 雖然根據(jù)上面的例子,SJF指標(biāo)比FCFS低,但是實際上并不是最少,因為SRTN更少嘛。但是這個如果在選擇題中,沒有錯誤的選項,可以選擇“SJF算法的平均等待時間、平均周轉(zhuǎn)時間最少”這個選項。
2.1.9.3 對上述兩種算法的思考
FCFS算法是在每次調(diào)度的時候選擇一個等待時間最長的作業(yè)(進程)為其服務(wù)。但是沒有考慮到作業(yè)的運行時間,因此導(dǎo)致了對短作業(yè)不友好的問題。
SJF算法是選擇一個執(zhí)行時間最短的作業(yè)為其服務(wù)。但是又完全不考慮各個作業(yè)的等待時間,因此導(dǎo)致了對長作業(yè)不友好的問題,甚至?xí)斐绅囸I問題。
那么有沒有一個算法,即考慮到各個作業(yè)的等待時間,又能兼顧運行時間呢?這就要引出來我們下面的算法了。
2.1.9.4 高響應(yīng)比優(yōu)先
| 英文名 | HRRN,Highest Response Ratio Next |
| 算法思想 | 在每次調(diào)度時先計算各個作業(yè)/進程的響應(yīng)比,選擇響應(yīng)比最高的作業(yè)/進程為其服務(wù)。其中響應(yīng)比的計算公式為響應(yīng)比=等待時間+要求服務(wù)時間要求服務(wù)時間響應(yīng)比 = \frac{等待時間+要求服務(wù)時間}{要求服務(wù)時間}響應(yīng)比=要求服務(wù)時間等待時間+要求服務(wù)時間? |
| 用于進程/作業(yè)調(diào)度 | 既可用于作業(yè)調(diào)度,也可用于進程調(diào)度 |
| 是否可搶占? | 非搶占式的算法。因此只有當(dāng)前運行的作業(yè)/進程主動放棄處理機時,才需要調(diào)度,才需要計算響應(yīng)比。 |
| 優(yōu)缺點 | 綜合考慮了等待時間和運行時間(要求服務(wù)時間) |
| 是否會導(dǎo)致饑餓 | 不會 |
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用高響應(yīng)比優(yōu)先調(diào)度算法,計算各進程的等待時間、平均等待時間、周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間。
2.1.9.5 小結(jié)
這幾種算法主要關(guān)心對用戶的公平性、平均周轉(zhuǎn)時間、平均等待時間等評價系統(tǒng)整體性能的指標(biāo),但是不關(guān)心“響應(yīng)時間”,也并不區(qū)分任務(wù)的緊急程度,因此對于用戶來說,交互性很糟糕。因此這三種算法一般適合用于早期的批處理系統(tǒng),當(dāng)然,FCFS算法也常結(jié)合其他的算法使用,在現(xiàn)在也扮演著很重要的角色。
在下一部分,我們會講講交互式系統(tǒng)的調(diào)度算法。
總結(jié)
以上是生活随笔為你收集整理的王道操作系统考研笔记——2.1.9 调度算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电商系统的库存管理
- 下一篇: java customerservlet