操作系统(十七)调度算法(二)
2.2.5 調(diào)度算法(二)
? 在上一節(jié)中我們講了三種調(diào)度算法,分別是先來先服務算法,短作業(yè)優(yōu)先算法,高相應比優(yōu)先算法,今天我們再來學習三種算法,分別是時間片輪轉算法,優(yōu)先級調(diào)度算法,多級反饋隊列算法。
目錄
2.2.5 調(diào)度算法(二)
? ? ? ???2.2.5.1 時間片輪轉算法(RR, Round-Robin)
2.2.5.2 優(yōu)先級調(diào)度算法
2.2.5.3 多級反饋調(diào)度算法
2.2.5.4 三種調(diào)度算法比較
?
2.2.5.1 時間片輪轉算法(RR, Round-Robin)
? 時間片輪轉算法:按照各進程到達就緒隊列的順序,輪流讓各個進程執(zhí)行一個時間片(如 100ms)。若進程未在一個時間片內(nèi)執(zhí)行完,則剝奪處理機,將進程重新放到就緒隊列隊尾重新排隊。我們需要注意的是時間片輪轉算法應用的對象是進程,因為只有進程才會被分配時間片而作業(yè)并不會。時間片輪轉算法是一種搶占式的算法,由時鐘裝置發(fā)出中斷信號來通知CPU時間已到。
? 有一組進程,如下圖所示,請用時間片輪轉算法給出進程的執(zhí)行順序,時間片分別設為2以及5 。?
?
? 時間片為2時,進程到達情況如下:
? 0時刻:只有P1這一個進程所以P1上處理機運行。
? 2時刻:P2到達,被存放在就緒隊列的隊頭,剛好P1時間片完于是P1插入到隊尾,P2上處理機運行。
? 4時刻:P3到達,P2時間片用完被插入到P3之后,但此時隊頭中為P1,于是將P1上處理機運行。
? 5時刻:P4到達,但是此時P1時間片還沒完于是將P4插入到隊尾
? 6時刻:P1的時間片完,下處理機并插入到隊尾,處于隊頭的P3進行調(diào)度。
? 7時刻:雖然P3的時間片還沒完但P3已經(jīng)結束了運行,所以隊頭的P2發(fā)生調(diào)度
? 9時刻:進程P2時間片用完,并剛好運行完,發(fā)生調(diào)度,P4上處理機 ? ? 11時刻:P4時間片用完,重新回到就緒隊列。P1上處理機 ? 12時刻:P1運行完,主動放棄處理機,此時就緒隊列中只剩P4,P4上處理機 ? 14時刻:就緒隊列為空,因此讓P4接著運行一個時間片。 ? 16時刻:所有進程運行結束 ? 上述過程的運行示意圖如下: ?? 至于時間片大小為5時,情況與時間片大小為2類似,請大家自己分析,這里只貼出結果: 這是大家可能會發(fā)現(xiàn),時間片為5的輪轉算法與先來先服務算法的調(diào)度情況是一致的,所以如果時間片劃分過大那么時間片輪轉算法就會退化為先來先服務算法;另一方面,如果時間片劃分過小就會導致進程切換頻繁,系統(tǒng)開銷過大。2.2.5.2 優(yōu)先級調(diào)度算法
? 優(yōu)先級調(diào)度算法:每個作業(yè)/進程有各自的優(yōu)先級,調(diào)度時選擇優(yōu)先級最高的作業(yè)/進程。優(yōu)先級調(diào)度算法既有搶占式又有非搶占式,總之一切都是根據(jù)優(yōu)先級高低來決定的。
? 在如圖所示的進程中,我們規(guī)定優(yōu)先數(shù)越大,優(yōu)先級越高,分別用搶占式以及非搶占式給出調(diào)度順序:
? 非搶占式:(括號中是處于就緒隊列中的進程)
??0時刻(P1):只有P1到達,P1上處理機。
? 7時刻(P2、P3、P4):P1運行完成主動放棄處理機,其余進程都已到達,P3優(yōu)先級最高,P3上處理機。 ? 8時刻( P2、P4 ):P3完成,P2、P4優(yōu)先級相同,由于P2先到達,因此P2優(yōu)先上處理機 ? 12時刻( P4):P2完成,就緒隊列只剩P4,P4上處理機。 ? 16時刻( ):P4完成,所有進程都結束調(diào)度結果如下圖所示:
搶占式:
0時刻(P1):只有P1到達,P1上處理機。
2時刻(P2):P2到達就緒隊列,優(yōu)先級比P1更高,發(fā)生搶占。P1回到就緒隊列,P2上處理機。
4時刻(P1、P3):P3到達,優(yōu)先級比P2更高,P2回到就緒隊列,P3搶占處理機。 5時刻(P1、P2、P4):P3完成,主動釋放處理機,同時,P4也到達,由于P2比P4更先進入就緒隊列,因此選擇P2上處理機 7時刻(P1、P4):P2完成,就緒隊列只剩P1、P4,P4上處理機。 11時刻(P1 ):P4完成,P1上處理機 16時刻():P1完成,所有進程均完成。 調(diào)度結果如下圖所示: 當然,優(yōu)先級可以不是固定的,操作系統(tǒng)可以靈活的調(diào)整優(yōu)先級讓等待時間長的進程優(yōu)先得到服務。2.2.5.3 多級反饋調(diào)度算法
? 多級反饋調(diào)度算法實際上是對以上各種算法的折中考慮,算法規(guī)則如下:
- 設置多級就緒隊列,各級隊列優(yōu)先級從高到低,時間片從小到大
- 新進程到達時先進入第1級隊列,按FCFS原則排隊等待被分配時間片,若用完時間片進程還未結束,則進程進入下一級隊列隊尾。如果此時已經(jīng)是在最下級的隊列,則重新放回該隊列隊尾
- 只有第 k 級隊列為空時,才會為 k+1 級隊頭的進程分配時間片
多級反饋調(diào)度算法只適用于進程調(diào)度,且也有搶占式和非搶占式兩種:搶占式的算法。在 k 級隊列的進程運行過程中,若更上級的隊列(1~k-1級)中進入了一個新進程,則由于新進程處于優(yōu)先級更高的隊列中,因此新進程會搶占處理機,原來運行的進程放回 k 級隊列隊尾。
? 對于以下進程,我們采用搶占式的多級反饋進程調(diào)度算法來進行進程調(diào)度:(這個過程實在是太難弄了.....我想弄成GIF但失敗了)
調(diào)度的順序為P1(1) —> P2(1) —> P1(2)—> P2(1)—> P3(1)—> P2(2)—> P1(4) —> P1(1)(括號中為運行的時間片長度)。
2.2.5.4 三種調(diào)度算法比較
| 算法 | 搶占? | 優(yōu)點 | 缺點 | 饑餓? | 補充 |
| 時間片輪轉 | 搶占 | 公平,適用于分時系統(tǒng) | 頻繁切換有開銷,不區(qū)分優(yōu)先級 | 不會 | 時間片大小設計的影響 |
| 優(yōu)先級調(diào)度 | 非搶占與搶占均可 | 區(qū)分優(yōu)先級,適用于實時系統(tǒng) | 可能導致饑餓 | 會 | 動態(tài)優(yōu)先級設置 |
| 多級反饋隊列 | 搶占 | 都是優(yōu)點 | ? | 會 | ? |
總結
以上是生活随笔為你收集整理的操作系统(十七)调度算法(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人脸解锁除了要穿衣服,还有什么秘密?
- 下一篇: 操作系统(十八)进程同步与进程互斥