多級反饋隊列調度算法(轉)


多級反饋隊列調度算法

 
多級反饋隊列調度算法.png

如果有很多任務排隊等着被處理,哪個任務先被處理,哪個任務后處理,這個需要由操作系統決定,這就是調度。多級反饋隊列調度算法是目前操作系統調度算法中被公認的一種較好的調度算法。它可以滿足各種類型進程的需要,既能使高優先級的作業得到響應又能使短作業(進程)迅速完成。

基本概念

多級反饋隊列調度算法是一種根據先來先服務原則給就緒隊列排序,為就緒隊列賦予不同的優先級數,不同的時間片,按照優先級搶占CPU的調度算法。算法的實施過程如下:

  1. 按照先來先服務原則排序,設置N個就緒隊列為Q1,Q2...QN,每個隊列中都可以放很多作業;
  2. 為這N個就緒隊列賦予不同的優先級,第一個隊列的優先級最高,第二個隊列次之,其余各隊列的優先權逐個降低;
  3. 設置每個就緒隊列的時間片,優先權越高,算法賦予隊列的時間片越小。時間片大小的設定按照實際作業(進程)的需要調整;
  4. 進程在進入待調度的隊列等待時,首先進入優先級最高的Q1等待。
  5. 首先調度優先級高的隊列中的進程。若高優先級中隊列中已沒有調度的進程,則調度次優先級隊列中的進程。例如:Q1,Q2,Q3三個隊列,只有在Q1中沒有進程等待時才去調度Q2,同理,只有Q1,Q2都為空時才會去調度Q3。
  6. 對於同一個隊列中的各個進程,按照時間片輪轉法調度。比如Q1隊列的時間片為N,那么Q1中的作業在經歷了時間片為N的時間后,若還沒有完成,則進入Q2隊列等待,若Q2的時間片用完后作業還不能完成,一直進入下一級隊列,直至完成。
  7. 在低優先級的隊列中的進程在運行時,又有新到達的作業,那么在運行完這個時間片后,CPU馬上分配給新到達的作業即搶占式調度CPU。

應用范圍

此算法應用於同一個資源的多個使用者可分優先級使用資源的情況。

使用方法及步驟

假設系統中有3個就緒隊列Q1,Q2,Q3,時間片分別為2,4,8。

現在有3個作業J1,J2,J3分別在時間 0 ,1,3時刻到達。而它們所需要的CPU時間分別是3,2,1個時間片。

1、時刻0: J1到達。於是進入到隊列1 , 運行1個時間片 , 時間片還未到,此時J2到達。

2、時刻1: J2到達。 由於時間片仍然由J1掌控,於是等待。 J1在運行了1個時間片后,已經完成了在Q1中的2個時間片的限制,於是J1置於Q2等待被調度。現在處理機分配給J2。

3、時刻2: J1進入Q2等待調度,J2獲得CPU開始運行。

4、時刻3:J3到達,由於J2的時間片未到,故J3在Q1等待調度,J1也在Q2等待調度。

5、時刻4:J2處理完成,由於J3,J1都在等待調度,但是J3所在的隊列比J1所在的隊列的優先級要高,於是J3被調度,J1繼續在Q2等待。

6、時刻5:J3經過1個時間片,完成。

7、時刻6:由於Q1已經空閑,於是開始調度Q2中的作業,則J1得到處理器開始運行。

8、時刻7:J1再經過一個時間片,完成了任務。於是整個調度過程結束。

應用案例

應用1-男主人處理妻子和母親的要求

案例:中國男人在婆媳關系的融洽中起着非常重要的作用。現有一例子,母親有一件事情A要男人幫忙,1小時后妻子也有一件事情B要男人幫忙,兩件事情各自需要的時間為2小時和1小時。假設事情在家里就可以完成,男人在家,母親叫兒子幫忙后,男人開始做的時間為下午3:00。 男人該怎么樣分配做事情的順序?

解決步驟:

  1. 根據題目,設定男人連續做事時長分別為半小時和1小時
  2. 下午3:00,按照先來先服務原則,母親先叫兒子辦事情,所以男人先幫母親做事情A,此時事情A等級為1;
  3. 下午4:00,妻子叫男人幫忙,於是男人暫停事情A(事情A還剩下1個小時的執行過程),開始做事情B,事情B等級為1,此時事情A等級降為2,
  4. 下午4:30,男人暫停事情B,此時事情B等級降為2(事情B還剩下半個小時的執行過程),幫母親干事情A
  5. 下午5:30,男人完成事情A,幫妻子干事情B
  6. 下午6:00,男人完成事情B

這個過程中,男人既完了了母親的任務,也完成了妻子的任務,兩件事情交叉處理,沒有出現母親一直等,或是妻子一直等的情況。這就是多任務的一種調度方式。

可以體現的計算思維

多級反饋隊列調度算法體現了計算思維的調度特點,應用了先來先服務原則、應用時間片等做法使得每個申請者都能及時使用資源,是一種很好的協調整體的解決方案。

 

——摘自計算思維百科

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM