日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

(王道408考研操作系统)第二章进程管理-第二节4:调度算法详解2(RR、HPF和MFQ)

發(fā)布時間:2025/3/15 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (王道408考研操作系统)第二章进程管理-第二节4:调度算法详解2(RR、HPF和MFQ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一:時間片輪轉(zhuǎn)調(diào)度算法(RR)
  • 二:優(yōu)先級調(diào)度算法(HPF)
  • 三:多級反饋隊列調(diào)度算法(MFQ)
  • 總結(jié)

進程調(diào)度算法也稱為CPU調(diào)度算法,操作系統(tǒng)內(nèi)存在著多種調(diào)度算法,有的調(diào)度算法適用于作業(yè)調(diào)度,有的調(diào)度算法適用于進程調(diào)度,有的兩者都適用。常見的調(diào)度算法有(本節(jié)介紹適合于分時系統(tǒng)、交互式系統(tǒng)的調(diào)度算法):

  • 時間片輪轉(zhuǎn)調(diào)度算法
  • 最高優(yōu)先級調(diào)度算法
  • 多級反饋隊列調(diào)度算法

一:時間片輪轉(zhuǎn)調(diào)度算法(RR)

算法思想:公平地、輪流地為各個進程服務(wù),讓每個進程在一定時間間隔內(nèi)都可以得到響應(yīng)。按照各進程到達就緒隊列的順序,輪流讓各個進程執(zhí)行一個時間片(Quantum),若進程未在一個時間片內(nèi)執(zhí)行完畢,則剝奪處理機,然后將其放入就緒隊列重新排隊

  • 用于進程調(diào)度(因為只有作業(yè)放入內(nèi)存建立了相應(yīng)進程后,才能被分配處理機時間片)
  • 若進程未能在時間片內(nèi)運行完畢,則會被強行剝奪,屬于搶占式算法,由時鐘裝置發(fā)出時鐘中斷通知CPU時間片已到

比如,下面有4個進程P1P_{1}P1?P2P_{2}P2?P3P_{3}P3?P4P_{4}P4?,他們到達就緒隊列的到達時間和運行時間如下表所示,使用Pn(m)P_{n}(m)Pn?(m)表示當前進程的剩余運行時間為mmm

進程到達時間運行時間
P1P_{1}P1?05
P2P_{2}P2?24
P3P_{3}P3?41
P4P_{4}P4?56

假設(shè)時間片大小為2,其變化過程如下

  • 在0時刻,P1(5)P_{1}(5)P1?(5)P1P_{1}P1?到達,P1P_{1}P1?上處理機運行一個時間片

  • 在2時刻,有P2(4)P_{2}(4)P2?(4)P1(3)P_{1}(3)P1?(3)P2P_{2}P2?到達就緒隊列,同時此時 P1P_{1}P1?的時間片用完,被剝奪處理機,重新放回就緒隊列隊尾 (需要注意這種情況中默認新到達的進程先進入就緒隊列

  • 此時P2P_{2}P2?處于就緒隊列隊頭,因此它上處理機

  • 在4時刻,P1(3)P_{1}(3)P1?(3)P3(1)P_{3}(1)P3?(1)P2(2)P_{2}(2)P2?(2)P3P_{3}P3?到達就緒隊列P3P_{3}P3?插入到就緒隊列隊尾,而此時P2P_{2}P2?時間片也已經(jīng)到了,因此P2P_{2}P2?下處理機插入到隊尾。此時P1P_{1}P1?處于隊頭,因此P1P_{1}P1?處理機

  • 在5時刻,P3(1)P_{3}(1)P3?(1)P2(2)P_{2}(2)P2?(2)P4(6)P_{4}(6)P4?(6)P4P_{4}P4?到達就緒隊列P4P_{4}P4?插入到就緒隊列隊尾。此時不進行調(diào)度,因為P1P_{1}P1?還處于運行態(tài),它的時間片還沒有用完

  • 在6時刻,P3(1)P_{3}(1)P3?(1)P2(2)P_{2}(2)P2?(2)P4(6)P_{4}(6)P4?(6)P1(1)P_{1}(1)P1?(1)P1P_{1}P1?的時間片用完,下處理機,重新放回隊尾,然后P3P_{3}P3?開始運行

  • 在7時刻,P2(2)P_{2}(2)P2?(2)P4(6)P_{4}(6)P4?(6)P1(1)P_{1}(1)P1?(1)。雖然P3P_{3}P3?的時間片還沒用完,但是它已經(jīng)結(jié)束了,所以P3P_{3}P3?主動放棄處理機,P2P_{2}P2?上處理機

  • 在9時刻,P4(6)P_{4}(6)P4?(6)P1(1)P_{1}(1)P1?(1)P2P_{2}P2?時間片用完,而恰好P2P_{2}P2?也已經(jīng)結(jié)束,此時P4P_{4}P4?上處理機

  • 在11時刻,P1(1)P_{1}(1)P1?(1)P4(4)P_{4}(4)P4?(4)P1P_{1}P1?時間片用完,放回隊尾,P1上處理機

  • 在12時刻,P4(4)P_{4}(4)P4?(4)P1P_{1}P1?運行完畢主動放棄處理機,P4P_{4}P4?上處理機

  • 在14時刻,就緒隊列為空,P4P_{4}P4?會繼續(xù)再運行1個時間片

  • 在16時刻,所有進程運行完畢

假設(shè)時間片大小為5,其變化過程如下

  • 在0時刻,P1(5)P_{1}(5)P1?(5)P1P_{1}P1?到達,P1P_{1}P1?上處理機運行一個時間片
  • 在2時刻,P2(4)P_{2}(4)P2?(4)P2P_{2}P2?到達,但是P1P_{1}P1?的時間片還未結(jié)束,暫不調(diào)度
  • 在4時刻,P2(4)P_{2}(4)P2?(4)P3(1)P_{3}(1)P3?(1)P3P_{3}P3?到達,但是P1P_{1}P1?的時間片還未結(jié)束,暫不調(diào)度
  • 在5時刻,P2(4)P_{2}(4)P2?(4)P3(1)P_{3}(1)P3?(1)P4(6)P_{4}(6)P4?(6)P4P_{4}P4?到達,同時P1P_{1}P1?運行結(jié)束,接著讓P2P_{2}P2?上處理機
  • 在9時刻,P3(1)P_{3}(1)P3?(1)P4(6)P_{4}(6)P4?(6)P4P_{4}P4?運行結(jié)束,主動放棄處理機發(fā)生調(diào)度。讓P3P_{3}P3?上處理機
  • 在10時刻,P4(6)P_{4}(6)P4?(6)P3P_{3}P3?運行結(jié)束,主動放棄處理機,發(fā)生調(diào)度。讓P4P_{4}P4?上處理機
  • 在15時刻。P4P_{4}P4?時間片用光,且就緒隊隊列為空,故讓P4P_{4}P4?繼續(xù)下一個時間片
  • 在16時刻。所有進程運行結(jié)束

時間片大小的影響

  • 時間片太大:使得每個進程都可以在一個時間片內(nèi)完成,此時RR算法就退化為了FCFS算法,并且會增大進程響應(yīng)時間
  • 時間片太小:由于進程調(diào)度、切換是有時間代價的,因此如果時間片太小,會導(dǎo)致進程切換過于頻繁,系統(tǒng)會花大量時間來處理進程切換

優(yōu)缺點

  • 優(yōu)點: 公平、響應(yīng)快
  • 缺點: 由于高頻率的進程切換,因此會有一定開銷,且不能區(qū)分任務(wù)的緊急程度

是否會導(dǎo)致饑餓現(xiàn)象:不會

二:優(yōu)先級調(diào)度算法(HPF)

隨著計算機的發(fā)展,特別是實時操作系統(tǒng)的出現(xiàn),越來越多的應(yīng)用場景需要根據(jù)任務(wù)的緊急程度(優(yōu)先級) 來決定處理順序。進程的優(yōu)先級可以被劃分為

  • 靜態(tài)優(yōu)先級:創(chuàng)建進程的時候,就已經(jīng)確定好了優(yōu)先級,整個運行過程優(yōu)先級都不會發(fā)生變化
  • 動態(tài)優(yōu)先級:根據(jù)進程的動態(tài)變化調(diào)整優(yōu)先級(比如當進程的運行時間增加則降低其優(yōu)先級、進程等待時間增加則提高其優(yōu)先級等等)

算法思想 :每個作業(yè)/進程都有各自的優(yōu)先級,調(diào)度時選擇優(yōu)先級最高的作業(yè)/進程

  • 可用于作業(yè)調(diào)度、進程調(diào)度,甚至I/O調(diào)度
  • 搶占式(當就緒隊列中出現(xiàn)優(yōu)先級高的進程,當前進程被掛起,調(diào)度優(yōu)先級高的進程)和非搶占(當就緒隊列中出現(xiàn)優(yōu)先級高的進程,運行完當前進程,再選擇優(yōu)先級高的進程)兩種

比如,下面有4個進程P1P_{1}P1?P2P_{2}P2?P3P_{3}P3?P4P_{4}P4?,他們到達就緒隊列的到達時間、運行時間及進程優(yōu)先數(shù) ,如下表所示

  • 一般來說,優(yōu)先數(shù)越大,優(yōu)先級越高
進程到達時間運行時間優(yōu)先數(shù)
P1P_{1}P1?071
P2P_{2}P2?242
P3P_{3}P3?413
P4P_{4}P4?542

采用非搶占式優(yōu)先級調(diào)度算法,意味著只有進程主動放棄處理機時才發(fā)生調(diào)度,因此其過程也顯而易見

采用搶占式優(yōu)先級調(diào)度算法,除了進程主動放棄處理機時會發(fā)生調(diào)度之外,當新進程到達時(就緒隊列改變)也要考慮是否會發(fā)生調(diào)度,其變化過程如下

  • 在0時刻,P1P_{1}P1?到達,P1P_{1}P1?上處理機
  • 在2時刻,P2P_{2}P2?到達,使就緒隊列發(fā)生改變,同時由于P2P_{2}P2?的優(yōu)先級要高于P1P_{1}P1?,因此P1P_{1}P1?被剝奪回到就緒隊列,P2P_{2}P2?上處理機
  • 在4時刻,P3P_{3}P3?到達,其優(yōu)先級高于P2P_{2}P2?,因此P2P_{2}P2?回到就緒隊列,P3P_{3}P3?上處理機
  • 在5時刻,P3P_{3}P3?結(jié)束運行,主動放棄處理機,同時恰好P4P_{4}P4?到達,這里P2P_{2}P2?P4P_{4}P4?優(yōu)先級是一樣的,但是P2P_{2}P2?要比P4P_{4}P4?更早進入就緒隊列,所以P2P_{2}P2?上處理機
  • 在7時刻,P2P_{2}P2?完成,P4P_{4}P4?上處理機
  • 在11時刻,P4P_{4}P4?完成,P1P_{1}P1?上處理機
  • 在16時刻,所有進程結(jié)束運行

進程優(yōu)先級的設(shè)置原則

  • 系統(tǒng)進程大于用戶進程:系統(tǒng)進程作為系統(tǒng)的管理者,理應(yīng)擁有更高的優(yōu)先級
  • 交互型進程大于非交互型進程(前臺進程大于后臺進程):類比使用手機時的前臺應(yīng)用程序和后臺應(yīng)用程序
  • I/O密集型進程大于計算密集型進程:I/O密集型進程是指那些會頻繁使用I/O設(shè)備的進程;計算密集型進程是指那些頻繁使用CPU的進程。如果將I/O密集型進程設(shè)置得更高,就更有可能讓I/O設(shè)備盡早開始投入工作,進而提升系統(tǒng)的整體效率

優(yōu)缺點

  • 優(yōu)點: 使用優(yōu)先級區(qū)分緊急程度、重要程度、適用于實時操作系統(tǒng),可以靈活調(diào)整對各種作業(yè)/進程的偏好程度
  • 缺點: 有可能導(dǎo)致低優(yōu)先級進程得不到運行

是否會導(dǎo)致饑餓:會

三:多級反饋隊列調(diào)度算法(MFQ)

算法思想:MFQ算法其實是RR算法和HPF算法的綜合和發(fā)展

  • 多級表示有多個隊列,每個隊列優(yōu)先級從高到低,同時優(yōu)先級越高時間片越短
  • 反饋表示如果有新的進程加入優(yōu)先級高的隊列時,立刻停止當前正在運行的進程,轉(zhuǎn)而去運行優(yōu)先級高的隊列

算法具體規(guī)則

  • 設(shè)置了多個隊列,賦予每個隊列不同的優(yōu)先級,每個隊列優(yōu)先級從高到低,同時優(yōu)先級越高時間片越短
  • 新的進程會被放入到第一級隊列的末尾,按FCFS算法的原則排隊等待被調(diào)度,如果在第一級隊列規(guī)定的時間片內(nèi)沒有運行完畢,則將其轉(zhuǎn)入第二級隊列的末尾,依次類推,直至完成
  • 當較高優(yōu)先級的隊列為空時,才調(diào)度較低優(yōu)先級隊列中的進程。如果進程運行時,有新的進程進入較高優(yōu)先級隊列時,則停止當前運行的進程并將其移入原隊列的末尾,接著讓較高優(yōu)先級的進程運行

比如,下面有3個進程P1P_{1}P1?P2P_{2}P2?P3P_{3}P3?,他們到達就緒隊列的到達時間和運行時間如下表所示

進程到達時間運行時間
P1P_{1}P1?08
P2P_{2}P2?14
P3P_{3}P3?51

根據(jù)“算法規(guī)則”中的敘述,建立優(yōu)先級隊列,其優(yōu)先級和時間片分配如下

整個變化過程如下

  • P1P_{1}P1?到達,進入第1級隊列,按FCFS算法分配時間片

  • 第1級隊列其時間片只有1,因此1個時刻后,P1P_{1}P1?時間片用完。但是其剩余時間還有7,還未運行完畢,所以會進入第2級隊列

  • 同時在1時刻,P2P_{2}P2?到達并進入第1級隊列,對于P1P_{1}P1?來說,它處在第2級隊列,由于此時第1級隊列不為空,所以它不會被調(diào)度,此時先調(diào)度第1級隊列中的P2P_{2}P2?

  • P2P_{2}P2?的一個時間片用完之后繼續(xù)放到第2級隊列

  • 在2時刻沒有新的進程到來,同時對于 P1P_{1}P1?P2P_{2}P2?來說相對于它們所在的更高一級的優(yōu)先級隊列,也就是第1級隊列是空的,因此為它們分配時間片,按照FCFS原則, P1P_{1}P1?被調(diào)度,時間片為2

  • P1P_{1}P1?時間片到后還沒有完成運行,因此會被放入第3級隊列

  • 接著 P2P_{2}P2?被調(diào)度

  • P2P_{2}P2?運行1個時間片后,也即在5時刻 P3P_{3}P3?到達并進入第1級隊列,此時更高優(yōu)先級隊列中有進程存在,所以處在處理機上的 P2P_{2}P2?會被剝奪下來,仍然回到其所在的隊列隊尾,接著讓 P3P_{3}P3?上處理機

  • P3P_{3}P3?運行1個時間片后結(jié)束運行

  • 然后P2P_{2}P2?繼續(xù)被調(diào)度,其剩余時間為2,所以正好運行2個時間片后結(jié)束運行

  • 此時第1級、第2級隊列為空,因此處在第3級隊列P1P_{1}P1?此時可以被調(diào)度,因此分配4個時間片

  • 4個時間片結(jié)束之后,P1P_{1}P1?剩余時間還有1,而此時它已經(jīng)處在了最下級的隊列了,因此重新放回最下級隊列隊尾即可,然后結(jié)束運行

從以上的敘述中大家可以感受到:

  • 短作業(yè)可能可以在第一級隊列很快地被處理完
  • 長作業(yè)如果第一級處理不完,可以移入下一級等待。等待時間雖然變長了,但是運行時間也會變長

多級反饋隊列的優(yōu)點

  • 終端型作業(yè)用戶:短作業(yè)優(yōu)先(例如命令行輸入命令)
  • 短批處理作業(yè)用戶:周轉(zhuǎn)時間較短
  • 長批處理作業(yè)用戶:經(jīng)過前面幾個隊列得到部分執(zhí)行,不會長期得不到處理

是否會導(dǎo)致饑餓:會


總結(jié)

總結(jié)

以上是生活随笔為你收集整理的(王道408考研操作系统)第二章进程管理-第二节4:调度算法详解2(RR、HPF和MFQ)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。