常用的调度算法(包含实例)|操作系统
目錄
- 1.先來先服務(wù)調(diào)度算法(FCFS)
- 2.優(yōu)先級調(diào)度算法
- 3.最短作業(yè)優(yōu)先調(diào)度算法(SJF)
- 4.最高響應(yīng)比優(yōu)先調(diào)度算法(HRRN)
- 5.輪轉(zhuǎn)調(diào)度算法(RR)
- 6.多級反饋輪轉(zhuǎn)調(diào)度算法
- 7.實(shí)時(shí)系統(tǒng)的調(diào)度算法
1.先來先服務(wù)調(diào)度算法(FCFS)
原理:{\color{Violet}原理:}原理:
?\bullet? 先來先服務(wù)(First-Come-First-served)調(diào)度算法是最簡單的非搶占的調(diào)度算法。
?\bullet? 它通過管理一個(gè)FIFO就緒隊(duì)列來實(shí)現(xiàn),從前到后按順序?qū)PU分配給進(jìn)程。
舉例:{\color{Violet}舉例:}舉例:
?\bullet? 現(xiàn)在有如下一組進(jìn)程:
| P1 | 30 |
| P2 | 5 |
| P3 | 2 |
所以執(zhí)行順序?yàn)?<P1、P2、P3><P_{1}、P_{2}、P_{3}><P1?、P2?、P3?> ,我們畫出它的甘特圖來形象的理解:
下面的時(shí)刻表示該進(jìn)程占用CPU的執(zhí)行時(shí)間。(后面的幾種調(diào)度方法也使用甘特圖來幫助理解。)
所以可以計(jì)算求得三個(gè)進(jìn)程的平均等待時(shí)間為:
0+30+353≈21.7{\color{Red}\frac{0+30+35}{3}≈21.7}30+30+35?≈21.7
特點(diǎn):{\color{Violet}特點(diǎn):}特點(diǎn):
?\bullet? FCFS調(diào)度算法對短進(jìn)程不利,尤其當(dāng)一個(gè)短進(jìn)程跟在長進(jìn)程后面時(shí),它需要等待很長的時(shí)間。有時(shí)候會(huì)導(dǎo)致CPU和設(shè)備的利用率很低,在實(shí)際情況中,FCFS算法通常與其他算法結(jié)合使用。
2.優(yōu)先級調(diào)度算法
原理:{\color{Violet}原理:}原理:
?\bullet? 由用戶或者系統(tǒng)按照某種原則給進(jìn)程一個(gè)優(yōu)先級,系統(tǒng)總是調(diào)度優(yōu)先級最高的那個(gè)進(jìn)程運(yùn)行。
?\bullet? 優(yōu)先級可以分為靜態(tài)優(yōu)先級和動(dòng)態(tài)優(yōu)先級。靜態(tài)優(yōu)先級就是指優(yōu)先級確定以后就不再改變,比如說按照它們的執(zhí)行時(shí)間長短來確定等等;動(dòng)態(tài)優(yōu)先級會(huì)隨著進(jìn)程的不斷執(zhí)行而發(fā)生改變,比如說可以按照等待時(shí)間的長短劃分優(yōu)先級等等。
?\bullet? 對優(yōu)先級動(dòng)態(tài)調(diào)整可以改善系統(tǒng)性能,但是動(dòng)態(tài)優(yōu)先級調(diào)度算法會(huì)增加系統(tǒng)開銷。
舉例:{\color{Violet}舉例:}舉例:
?\bullet? 現(xiàn)在有如下一組進(jìn)程(采用靜態(tài)優(yōu)先級調(diào)度算法):
| P1 | 9 | 5 |
| P2 | 4 | 1 |
| P3 | 2 | 3 |
| P4 | 1 | 4 |
所以執(zhí)行順序?yàn)?<P2、P3、P4、P1><P_{2}、P_{3}、P_{4}、P_{1}><P2?、P3?、P4?、P1?>,我們畫出它的甘特圖如下:
所以可以計(jì)算求得四個(gè)進(jìn)程的平均等待時(shí)間為:
0+4+6+74=4.25{\color{Red}\frac{0+4+6+7}{4}=4.25}40+4+6+7?=4.25
特點(diǎn):{\color{Violet}特點(diǎn):}特點(diǎn):
?\bullet? 可能會(huì)出現(xiàn)“饑餓”現(xiàn)象,就是優(yōu)先級低的進(jìn)程會(huì)一直等待CPU,未來避免這種問題的出現(xiàn),我們可以采用“老化”的策略,就是按一定時(shí)間間隔提高等待進(jìn)程的的優(yōu)先級數(shù)值。
?\bullet? 我們假設(shè)它們幾乎同時(shí)到達(dá),但是實(shí)際情況中總會(huì)有先后順序,在支持搶占的系統(tǒng)中,當(dāng)新進(jìn)程進(jìn)入就緒隊(duì)列時(shí),如果它的優(yōu)先級高于當(dāng)前運(yùn)行進(jìn)程的優(yōu)先級,那么就會(huì)搶占CPU;在非搶占系統(tǒng)中,只是將新進(jìn)程加入了就緒隊(duì)列中。
3.最短作業(yè)優(yōu)先調(diào)度算法(SJF)
原理:{\color{Violet}原理:}原理:
?\bullet? 最短作業(yè)優(yōu)先(Shortest-Job First)調(diào)度算法克服了FCFS的對短進(jìn)程不利的缺點(diǎn),它在就緒隊(duì)列中選擇處理時(shí)間最短的進(jìn)程,如果時(shí)間相同則可以按照FCFS準(zhǔn)則來處理。
?\bullet? 它提高了系統(tǒng)的吞吐量,但是反過來又對長進(jìn)程不利。
?\bullet? 它分為搶占式和非搶占式兩種情況
舉例:{\color{Violet}舉例:}舉例:
?\bullet? 現(xiàn)在有如下一組進(jìn)程,假設(shè)它們同時(shí)到達(dá)(非搶占式):
| P1 | 5 |
| P2 | 4 |
| P3 | 9 |
| P4 | 3 |
所以執(zhí)行順序?yàn)?<P4、P2、P1、P3><P_{4}、P_{2}、P_{1}、P_{3}><P4?、P2?、P1?、P3?>,我們畫出它的甘特圖如下:
所以可以計(jì)算求得三個(gè)進(jìn)程的平均等待時(shí)間為:
0+3+7+124=5.5{\color{Red}\frac{0+3+7+12}{4}=5.5}40+3+7+12?=5.5
?\bullet? 現(xiàn)在有如下一組進(jìn)程,假設(shè)它們不同時(shí)到達(dá)(搶占式):
| P1 | 0 | 8 |
| P2 | 1 | 4 |
| P3 | 2 | 9 |
| P4 | 3 | 5 |
最初只有P1進(jìn)程,那么執(zhí)行P1進(jìn)程;當(dāng)時(shí)間1時(shí)P2到達(dá),此時(shí)P1剩余執(zhí)行時(shí)間為7,P2執(zhí)行時(shí)間為4,那么執(zhí)行P2進(jìn)程;當(dāng)時(shí)間2時(shí),P3到達(dá),此時(shí)最短執(zhí)行時(shí)間仍然為P2;時(shí)間3時(shí),P4到達(dá),此時(shí)P2執(zhí)行時(shí)間為2,P4也為2,所以先讓P2執(zhí)行完在讓P4執(zhí)行,然后再讓P1執(zhí)行,最后在讓P3執(zhí)行。
所以執(zhí)行順序?yàn)?KaTeX parse error: Expected 'EOF', got '}' at position 31: …{4}、P_{1}、P_{3}}?>,我們畫出它的甘特圖如下:
所以可以計(jì)算求得三個(gè)進(jìn)程的平均等待時(shí)間為:
((10?1)+0+(17?2)+(5?3))4=6.5{\color{Red}\frac{((10-1)+0+(17-2)+(5-3))}{4}=6.5}4((10?1)+0+(17?2)+(5?3))?=6.5
分母上面的式子為每個(gè)進(jìn)程開始執(zhí)行的時(shí)間減去開始等待的時(shí)間之和。
特點(diǎn):{\color{Violet}特點(diǎn):}特點(diǎn):
?\bullet? 對于非搶占的SJF調(diào)度算法,可以看作是優(yōu)先級調(diào)度算法的一種特例。
4.最高響應(yīng)比優(yōu)先調(diào)度算法(HRRN)
原理:{\color{Violet}原理:}原理:
?\bullet? 最高響應(yīng)比(Highest Response Ratio Next)調(diào)度算法集合了FCFS算法和非搶占SJF算法的優(yōu)點(diǎn),使用響應(yīng)比R來表征,即:
R=W+SS(W為等待時(shí)間、S為預(yù)計(jì)執(zhí)行時(shí)間)R = \frac{W+S}{S} \ (W為等待時(shí)間、S為預(yù)計(jì)執(zhí)行時(shí)間)R=SW+S??(W為等待時(shí)間、S為預(yù)計(jì)執(zhí)行時(shí)間)
?\bullet? 在該算法下,等待時(shí)間相同的時(shí)候短進(jìn)程響應(yīng)比高于長進(jìn)程,短進(jìn)程優(yōu)先被調(diào)度;而隨著等待時(shí)間增長,進(jìn)程的響應(yīng)比增加,長進(jìn)程被調(diào)度的可能性也會(huì)增加。
舉例:{\color{Violet}舉例:}舉例:
?\bullet? 現(xiàn)在有如下一組進(jìn)程如下:
| P1 | 0 | 10 |
| P2 | 1 | 1 |
| P3 | 2 | 2 |
| P4 | 3 | 1 |
| P5 | 4 | 5 |
?\bullet? 0時(shí)刻P1運(yùn)行,10時(shí)刻P1運(yùn)行完畢,此時(shí)P2 ~ P5的響應(yīng)比為:
P2:1+91=10;P3:2+82=5;P_{2}:\frac{1+9}{1}=10 ;\ \ \ P_{3}:\frac{2+8}{2}=5;P2?:11+9?=10;???P3?:22+8?=5;
P3:1+71=8;P4:5+62=5.5;P_{3}:\frac{1+7}{1}=8 ;\ \ \ P_{4}:\frac{5+6}{2}=5.5;P3?:11+7?=8;???P4?:25+6?=5.5;
?\bullet? 所以P2運(yùn)行,直到11時(shí)刻運(yùn)行結(jié)束,此時(shí)P3 ~ P5的響應(yīng)比為:
P3:2+92=5.5;P4:1+82=9;P5:5+75=2.4;P_{3}:\frac{2+9}{2}=5.5 ;\ \ \ P_{4}:\frac{1+8}{2}=9; \ \ \ P_{5}:\frac{5+7}{5}=2.4;P3?:22+9?=5.5;???P4?:21+8?=9;???P5?:55+7?=2.4;
?\bullet? 所以P4運(yùn)行,直到12時(shí)刻運(yùn)行結(jié)束,此時(shí)P3 和 P5的響應(yīng)比為:
P3:2+102=6;P5:5+85=2.6;P_{3}:\frac{2+10}{2}=6 ;\ \ \ P_{5}:\frac{5+8}{5}=2.6;P3?:22+10?=6;???P5?:55+8?=2.6;
?\bullet? 所以先執(zhí)行P3,后執(zhí)行P5。
?\bullet? 所以執(zhí)行順序?yàn)?KaTeX parse error: Expected 'EOF', got '}' at position 31: …{4}、P_{3}、P_{5}}?>,我們畫出它的甘特圖如下:
所以可以計(jì)算求得五個(gè)進(jìn)程的平均等待時(shí)間為:
(0+(10?1)+(11?2)+(12?3)+(14?4))5=7.4{\color{Red}\frac{(0+(10-1)+(11-2)+(12-3)+(14-4))}{5}=7.4}5(0+(10?1)+(11?2)+(12?3)+(14?4))?=7.4
5.輪轉(zhuǎn)調(diào)度算法(RR)
原理:{\color{Violet}原理:}原理:
?\bullet? 輪轉(zhuǎn)(Round Robin)調(diào)度算法是一種基于搶占的調(diào)度策略,在分時(shí)系統(tǒng)中,每個(gè)進(jìn)程會(huì)被分配一個(gè)固定的時(shí)間片,就緒隊(duì)列中的進(jìn)程按順序依此調(diào)度運(yùn)行。
?\bullet? 時(shí)間片過短會(huì)使進(jìn)程切換過于頻繁,增加系統(tǒng)開銷;時(shí)間片過長會(huì)使進(jìn)程響應(yīng)時(shí)間增加。
舉例:{\color{Violet}舉例:}舉例:
?\bullet? 現(xiàn)在有如下一組進(jìn)程如下:
| P1 | 24 |
| P2 | 3 |
| P3 | 3 |
這里時(shí)間片我們選擇為4,按照原理可得甘特圖如下:
所以可以計(jì)算求得三個(gè)進(jìn)程的平均等待時(shí)間為:
6+4+73≈5.67{\color{Red}\frac{6+4+7}{3}≈5.67}36+4+7?≈5.67
6.多級反饋輪轉(zhuǎn)調(diào)度算法
原理:{\color{Violet}原理:}原理:
?\bullet? 是對簡單輪轉(zhuǎn)調(diào)度算法的改進(jìn),它把新就緒的進(jìn)程和被搶占后回到就緒隊(duì)列的進(jìn)程加以區(qū)分,將它們放入不同優(yōu)先級的就緒隊(duì)列中;
?\bullet? 被搶占后放回就緒隊(duì)列的進(jìn)程優(yōu)先級會(huì)降低,但是運(yùn)行的時(shí)間片長度會(huì)增加。
7.實(shí)時(shí)系統(tǒng)的調(diào)度算法
原理:{\color{Violet}原理:}原理:
?\bullet? 在實(shí)時(shí)系統(tǒng)中會(huì)給出一個(gè)最后期限,最后期限指定任務(wù)開始或結(jié)束的時(shí)間,任務(wù)必須嚴(yán)格按照最后期限執(zhí)行。
總結(jié)
以上是生活随笔為你收集整理的常用的调度算法(包含实例)|操作系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吉林大学珠海学院论坛 http://j.
- 下一篇: java信息管理系统总结_java实现科