常見的進程調度算法

一、進程和作業的區別

  區別:進程是一個程序在一個數據集上的一次執行,而作業是用戶提交給系統的一個任務。
  關係:一個作業通常包括幾個進程,幾個進程共同完成一個任務,即作業。
  作業調度是宏觀調度,它決定了哪一個作業能進入主存。進程調度是微觀調度,它決定各作業中的哪一個進程佔有中央處理器。

二、先來先服務和短作業(進程)優先調度算法

  ①先來先服務(FCFS)

  可用於作業調度和進程調度,簡單來說,每次調度都是從後備作業隊列中選擇一個或多個最先進入該隊列的作業,將它們調入內存,爲它們分配資源、創建進程,然後放入就緒隊列。在進程調度中採用FCFS算法時,則每次調度是從就緒隊列中選擇一個最先進入該隊列的進程,爲之分配處理機,使之運行,一直運行到完成或發生某事件而阻塞後才放棄處理機。它是一種最簡單的調度算法。

  ②短作業(進程)優先

  短作業(進程)優先調度算法SJ(P)F,是指對短作業或短進程優先調度的算法。它們可以分別用於作業調度和進程調度。短作業優先(SJF)的調度算法是從後備隊列中選擇一個或若干個估計運行時間最短的作業,將它們調入內存運行。而短進程優先(SPF)調度算法則是從就緒隊列中選出一個估計運行時間最短的進程,將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新調度。

  這兩種算法都是當進程或作業被分配處理機後,一直執行直到完成或被阻塞而放棄處理機。

三、高優先權優先調度算法

  ①優先權調度算法

  a.非搶佔式優先權算法 

  系統一旦把處理機分配給就緒隊列中優先權最高的進程後,該進程便一直執行下去,直至完成或被阻塞而放棄處理機,此時系統方可再將處理機重新分配給另一優先權最高的進程。這種調度算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。批處理是指用戶將一批作業提交給操作系統後就不再幹預,由操作系統控制它們自動運行。實時系統指計算的正確性不僅取決於程序的邏輯正確性,也取決於結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯。

  b.搶佔式優先權算法

  系統把處理機分配給優先權最高的進程後,當就緒隊列中出現一個比當前執行進程的優先級還高的進程時,進程調度程序就會停止當前進程,重新把處理機分配給優先級最高的進程。這種搶佔式的優先權調度算法能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對性能要求較高的批處理和分時系統中。

  ②高響應比優先調度算法

  優先權=(等待時間+服務時間)/服務時間。

  (1) 如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該算法有利於短作業。

  (2) 當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。

  (3) 對於長作業,作業的優先級可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先級便可升到很高,從而也可獲得處理機。簡言之,該算法既照顧了短作業,又考慮了作業到達的先後次序,不會使長作業長期得不到服務。因此,該算法實現了一種較好的折衷。當然,在利用該算法時,每要進行調度之前,都須先做響應比的計算,這會增加系統開銷。

四、基於時間片的輪轉調度算法

  1.時間片輪轉法

  系統將所有的就緒進程按先來先服務的原則排成一個隊列,每次調度時,把CPU 分配給隊首進程,並令其執行一個時間片。時間片的大小從幾ms 到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘中斷請求,調度程序便據此信號來停止該進程的執行,並將它送往就緒隊列的末尾;然後,再把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就可以保證就緒隊列中的所有進程在一給定的時間內均能獲得一時間片的處理機執行時間。換言之,系統能在給定的時間內響應所有用戶的請求。

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

  設有N個隊列(Q1,Q2....QN),優先級Priority(Q1) > Priority(Q2) > ... > Priority(QN)。

各個隊列的時間片是隨着優先級的增加而減少的,也就是說,優先級越高的隊列中它的時間片就越短。

  ①進程在進入待調度的隊列等待時,首先進入優先級最高的Q1等待。

  ②首先調度優先級高的隊列中的進程。若高優先級中隊列中已沒有調度的進程,則調度次優先級隊列中的進程。例如:Q1,Q2,Q3三個隊列,只有在Q1中沒有進程等待時纔去調度Q2,同理,只有Q1,Q2都爲空時纔會去調度Q3。

  ③對於同一個隊列中的各個進程,按照時間片輪轉法調度。比如Q1隊列的時間片爲N,那麼Q1中的作業在經歷了N個時間片後若還沒有完成,則進入Q2隊列等待,若Q2的時間片用完後作業還不能完成,一直進入下一級隊列,直至完成。

  ④在低優先級的隊列中的進程在運行時,又有新到達的作業,那麼在運行完這個時間片後,CPU馬上分配給新到達的作業(搶佔式)。

  多級反饋隊列調度算法既能使高優先級的作業得到響應又能使短作業(進程)迅速完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章