操作系统(十六)调度算法(一)
2.2.4 調(diào)度算法
目錄
2.2.4 調(diào)度算法
2.2.4.1 先來先服務(wù)(FCFS, First?Come First Serve)
2.2.4.2 短作業(yè)/進(jìn)程優(yōu)先(SJ/PF, Shortest?Job/Progress First)
2.2.4.3 高相應(yīng)比優(yōu)先算法(HRRN, Highest Response Ratio Next)
?2.2.4.4 三種調(diào)度算法的比較
2.2.4.1 先來先服務(wù)(FCFS, First?Come First Serve)
??顧名思義。按照“公平”原則,兌先來的進(jìn)程/作業(yè)進(jìn)行調(diào)度。
2.2.4.2 短作業(yè)/進(jìn)程優(yōu)先(SJ/PF, Shortest?Job/Progress First)
??最短的作業(yè)/進(jìn)程優(yōu)先得到服務(wù)(所謂“最短”,是指要求服務(wù)時間最短),可分為搶占式和非搶占式。
? 下面我們用一個實例來演示一下兩種調(diào)度算法到底是怎么樣運(yùn)行的:有如下表所示的四個進(jìn)程,按照先來先服務(wù)以及短作業(yè)優(yōu)先算法計算其指標(biāo)。
? 先來先服務(wù):先來的進(jìn)程先接受服務(wù),所以進(jìn)程的調(diào)度順序就是P1->P2->P3->P4,調(diào)度順序如下圖所示
? 周轉(zhuǎn)時間=完成時間-到達(dá)時間? ?P1:7-0=7;P2: 11-2=9; P3: 12-4=8; P4: 16-5=11
? 帶權(quán)周轉(zhuǎn)時間=周轉(zhuǎn)時間/運(yùn)行時間? P1: 7/7=1; P2: 9/4=2.25;? P3: 8/1=8; P4: 11/4=2.75
? 等待時間=完成時間-到達(dá)時間-運(yùn)行時間=周轉(zhuǎn)時間-運(yùn)行時間??P1=7-7=0;P2=9-4=5;P3=8-1=7;P4=11-4=7
? 平均周轉(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 ? 短作業(yè)優(yōu)先(SJF):每次調(diào)度時選擇當(dāng)前已到達(dá)且運(yùn)行時間最短的作業(yè)/進(jìn)程(非搶占式)。進(jìn)程最初的到達(dá)情況如下: ? 那么進(jìn)程調(diào)度順序為:P1 ->P3 ->?P2 ->?P4 則周轉(zhuǎn)時間 = 完成時間 - 到達(dá)時間? P1=7-0=7;P3=8-4=4;P2=12-2=10;P4=16-5=11 ? 帶權(quán)周轉(zhuǎn)時間 = 周轉(zhuǎn)時間/運(yùn)行時間 P1=7/7=1;P3=4/1=4;P2=10/4=2.5;P4=11/4=2.75 ? 等待時間 = 周轉(zhuǎn)時間 – 運(yùn)行時間 P1=7-7=0;P3=4-1=3;P2=10-4=6;P4=11-4=7 ? 平均周轉(zhuǎn)時間 = (7+4+10+11)/4 = 8 ? 平均帶權(quán)周轉(zhuǎn)時間 = (1+4+2.5+2.75)/4 = 2.56 ? 平均等待時間 = (0+3+6+7)/4 = 4 顯然對比FCFS算法的結(jié)果,SPF算法的平均等待/周轉(zhuǎn)/帶權(quán)周轉(zhuǎn)時間都要更低。 基于搶占式的短作業(yè)優(yōu)先算法又稱“最短剩余時間優(yōu)先算法(SRTN)”:每當(dāng)有進(jìn)程加入就緒隊列改變時就需要調(diào)度,如果新到達(dá)的進(jìn)程剩余時間比當(dāng)前運(yùn)行的進(jìn)程剩余時間更短,則由新進(jìn)程搶占處理機(jī),當(dāng)前運(yùn)行進(jìn)程重新回到就緒隊列。另外,當(dāng)一個進(jìn)程完成時也需要調(diào)度。 現(xiàn)在我們用最短剩余時間的調(diào)度方法來分析一下調(diào)度的順序: 0時刻P1到達(dá),剩余時間為7即P1(7); 2時刻P2到達(dá),此時P1(5),P2(4),進(jìn)程P2搶占P1,P1暫時停止; 4時刻(P3到達(dá)): P1(5)、 P2(2)、 P3(1),進(jìn)程P3搶占P2,P2暫時停止; 5時刻(P3完成且P4剛好到達(dá)):P1(5)、 P2(2)、 P4(4),進(jìn)程P2搶占P3,P3暫時停止,P2繼續(xù)運(yùn)行; 7時刻(P2完成):P1(5)、 P4(4),進(jìn)程P4搶占P2,P2暫時停止; 11時刻(P4完成) :P1(5),P1執(zhí)行;周轉(zhuǎn)時間 = 完成時間 - 到達(dá)時間? P1=16-0=16;P2=7-2=5;P3=5-4=1;P4=11-5=6
帶權(quán)周轉(zhuǎn)時間 = 周轉(zhuǎn)時間/運(yùn)行時間? P1=16/7=2.28;P2=5/4=1.25;P3=1/1=1;P4=6/4=1.5
等待時間 = 周轉(zhuǎn)時間 – 運(yùn)行時間??P1=16-7=9;P2=5-4=1;P3=1-1=0;P4=6-4=2
平均周轉(zhuǎn)時間 = (16+5+1+6)/4 = 7
平均帶權(quán)周轉(zhuǎn)時間 = (2.28+1.25+1+1.5)/4 = 1.50
平均等待時間 = (9+1+0+2)/4 = 3
2.2.4.3 高相應(yīng)比優(yōu)先算法(HRRN, Highest Response Ratio Next)
FCFS 算法是在每次調(diào)度的時候選擇一個等待時間最長的作業(yè)(進(jìn)程)為其服務(wù)。但是沒有考慮到作業(yè)的運(yùn)行時間,因此導(dǎo)致了對短作業(yè)不友好的問題。SJF 算法是選擇一個執(zhí)行時間最短的作業(yè)為其服務(wù)。但是又完全不考慮各個作業(yè)的等待時間,因此導(dǎo)致了對長作業(yè)不友好的問題,甚至還會造成饑餓問題。于是人們想出了一種既考慮各個作業(yè)等待時間又考慮作業(yè)運(yùn)行時間的算法--高相應(yīng)比優(yōu)先算法(HRRN, Highest Response Ratio Next)。 ??在每次調(diào)度時先計算各個作業(yè)/進(jìn)程的響應(yīng)比,選擇響應(yīng)比最高的作業(yè)/進(jìn)程為其服務(wù)。其中相應(yīng)比=(等待時間+要求服務(wù)時間)/要求服務(wù)時間。需要一提的是高相應(yīng)比優(yōu)先算法是一種非搶占式的算法。還是上例,運(yùn)用高相應(yīng)比優(yōu)先算法進(jìn)行進(jìn)程調(diào)度。??0時刻:只有 P1到達(dá)就緒隊列,P1上處理機(jī) ? 7時刻(P1主動放棄CPU): 就緒隊列中有 P2 (響應(yīng)比=(5+4)/4=2.25)、 P3((3+1)/1=4)、 P4((2+4)/4=1.5), ? 8時刻(P3完成): P2(2.5)、 P4(1.75) ? 12時刻(P2完成):就緒隊列中只剩下 P4
?因此調(diào)度順序為P1->P3->P2->P4。
?2.2.4.4 三種調(diào)度算法的比較
| 算法 | 搶占? | 優(yōu)點(diǎn) | 缺點(diǎn) | 考慮因素 | 會不會饑餓 |
| FCFS | 非搶占 | 公平;實現(xiàn)簡單 | 對短作業(yè)不利 | 等待時間 | 不會 |
| SJF | 默認(rèn)為非搶占式,也有SJF的搶占式版本最短剩余時間優(yōu)先算法(SRTN) | “最短的”平均等待/周轉(zhuǎn)時間; | 對長作業(yè)不利,可能導(dǎo)致饑餓;難以做到真正的短作業(yè) 優(yōu)先 | 運(yùn)行時間 | 會 |
| HRRN | 非搶占 | 上述兩種算法的權(quán)衡折中,綜合考慮的等待時間和運(yùn)行時間 | ? | 二者兼顧 | 不會 |
總結(jié)
以上是生活随笔為你收集整理的操作系统(十六)调度算法(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020-2021年中国购物中心消费者洞
- 下一篇: 人脸解锁除了要穿衣服,还有什么秘密?