1. 程式人生 > >程序排程演算法

程序排程演算法

先來先服務

按照作業/程序進入系統的先後次序進行排程,先進入系統者先排程;即啟動等待時間最長的作業/程序。是一種最簡單的排程演算法,可用於作業排程,也可用於程序排程 優缺點: 先來先服務優缺點

  • 比較有利於長作業(程序),而不利於短作業(程序)
  • 有利於CPU繁忙型作業(程序) ,而不利於I/O繁忙型作業(程序)
  • 用於批處理系統,不適於分時系統

短作業優先排程演算法(SJF)

概念:從佇列中選出一個估計執行時間最短的作業優先排程,即可用於作業排程,也可用於程序排程

優缺點:

  • 對長作業不利。嚴重的是,若一長作業(程序)進入系統的後備佇列(就緒佇列),由於排程程式總是優先排程那些(即使是後進來的)短作業(程序),將導致長作業(程序)長期不被排程——飢餓
  • 完全未考慮作業(程序)的緊迫程度,因而不能保證緊迫性作業(程序)會被及時處理
  • 由於作業(程序)的長短只是根據使用者所提供的估計執行時間而定的,而使用者又可能會有意或無意地縮短其作業的估計執行時間,致使該演算法不一定能真正做到短作業優先排程。

高優先權排程演算法

可用於作業排程,也可用於程序排程

  • 優先排程演算法的型別

    • 非搶佔式優先權排程演算法
      • 特點:系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成,或因發生某事件使該程序放棄處理機時,系統才將處理機重新分配給另一優先權最高的程序
      • 主要用於批處理系統中,也可用於某些對實時性要求不嚴的實時系統中
    • 搶佔式優先權排程演算法
      • 特點:把處理機分配給優先權最高的程序,但在執行期間,只要出現另一個優先權更高的程序,則程序排程程式就立即停止當前程序的執行,並將處理機分配給新到的優先權最高的程序
      • 注意:只要系統中出現一個新的就緒程序,就進行優先權比較
      • 能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對效能要求較高的批處理和分時系統中
  • 優先權型別 高優先權排程演算法,需要比較作業或程序的優先順序,所以我們需要了解一下優先順序 優先權分為靜態優先權、動態優先權

    • 靜態優先權
      • 靜態優先權在建立程序時確定,且在程序的整個執行期間保持不變。一般地,優先權是利用某一範圍內的一個整數來表示的,例如,0∼7或0∼255, 又把該整數稱為優先數
      • 確定程序優先權的依據有如下三個方面:
        • 程序型別:系統程序的優先權高於一般使用者程序。
        • 程序對資源的需求:如程序的估計執行時間及記憶體需要量少的程序,應賦予較高的優先權。
        • 使用者要求:由使用者程序的緊迫程度和使用者所付費用的多少來確定優先權。
    • 動態優先權
      • 概念:在建立程序時賦予的優先權是隨程序的推進或隨其等待時間的增加而改變,以獲得更好的排程效能。可規定,在就緒佇列中的程序,隨其等待時間的增長,其優先權以速率a提高
      • 特徵:具有相同優先權初值的程序,則最先進入就緒佇列,其將因其動態優先權變得最高而優先獲得處理機,此即FCFS演算法 具有各不相同的優先權初值的就緒程序,則優先權初值低的程序,在等待了足夠的時間後,其優先權便可能升為最高,從而可以獲得處理機
      • 注意:當採用搶佔式優先權排程演算法時,如果再規定當前程序的優先權以速率b下降,則可防止一個長作業長期地壟斷處理機

時間片輪轉法:

根據先來先服務的原則,將需要執行的所有程序按照到達時間的大小排成一個升序的序列,每次都給一個程序同樣大小的時間片,在這個時間片內如果程序執行結束了,那麼把程序從程序佇列中刪去,如果程序沒有結束,那麼把該程序停止然後改為等待狀態,放到程序佇列的尾部,直到所有的程序都已執行完畢

  • 程序的切換: 時間片夠用:意思就是在該時間片內,程序可以執行至結束,程序執行結束之後,將程序從程序佇列中刪除,然後啟動新的時間片

    時間片不夠用:意思是在該時間片內,程序只能完成它的一部分任務,在時間片用完之後,將程序的狀態改為等待狀態,將程序放到程序佇列的尾部,等待cpu的呼叫

  • 關於時間片大小的選擇

    時間片過小,則程序頻繁切換,會造成cpu資源的浪費 時間片過大,則輪轉排程演算法就退化成了先來先服務演算法