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