CPU調度算法


  1、先到先服務調度算法(FCFS)

  根據就緒隊列的到達時間來服務,此時就緒隊列是一個FIFO隊列,先到先服務,后到的線程不能搶占前面正在服務的線程。這種算法的優點是實現簡單,缺點也很明顯,就是CPU進程區間變化很大時,平均等待時間會變化很大。

  2、最短作業優先調度(SJF)

  顧名思義,就是CPU進程區間最短的先執行,如果兩個進程區間具有同樣的長度,那么按照FCFS來調度。

  SJF可以是搶占的,也可以是不搶占的。它的平均等待時間優於FCFS。

  3、優先級調度

  其實上面的SJF算法就是一種特殊的優先級調度,只不過這里的優先級定義更加廣泛一些,SJF算法的優先級是按照CPU進程區間長短來定義的,這里的優先級可以是其他的一些定義。

  優先級調度可以是搶占的,也可以是非搶占的。

  優先級調度的一個主要問題是無窮阻塞(也稱為飢餓),如果一個線程的優先級很低,可能需要等待很長的時間才能到這個線程執行,甚至永遠不執行,一種解決方法是老化(隨着時間的增長,增加線程的優先級)

  4、輪轉法調度(RR)

  輪轉法調度專門是為分時系統設計的。它類似於FCFS,但是增加了搶占為了切換線程。定義一個較小的時間單元,稱為時間片,通常為10-100ms。為了實現RR算法,將就緒隊列保存為FIFO隊列,新進程增加到就緒隊列隊尾,CPU調度程序從就緒隊列選擇第一個進程,設置定時器在一個時間片之后再中斷,再分派這個進程。

  如果該進程的CPU區間小於時間片,進程本身就會釋放CPU,調度程序繼續處理下一個進程,如果當前進程的CPU區間比時間片長,定時器會產生CPU中斷,實行上下文切換,然后將此進程放到就緒隊列隊尾,繼續調度就緒隊列第一個進程。

  5、多級隊列調度:

  這里對進程進行分組,在組內使用FCFS和SJF算法,在組間實行優先級調度或者輪轉法調度。但是不允許進程在組間切換。

  6、多級反饋隊列調度

  允許進程在組間切換,主要思想是根據不同區間的特點區分進程,如果CPU進程占用過多CPU時間,那么它會被轉移到更低優先級隊列。這種形式老化阻止飢餓。


免責聲明!

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



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