進程調度算法


在系統中,用戶進程數一般都多於處理機數、這將導致它們互相爭奪處理機。另外,系統進程也同樣需要使用處理機。這就要求進程調度程序按一定的策略,動態地把處理機分配給處於就緒隊列中的某一個進程,以使之執行。

進程調度任務

(1)首先保存當前進程的處理機的現場信息

(2)按照算法選取進程

(3)把處理器分配給進程。(將選中進程的進程控制塊內有關處理機現場現場的信息裝入處理機相應寄存器中,進程控制處理機,使之從上次的斷點處恢復運行)

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

1.先來先服務調度算法

    按照作業提交或進程變為就緒狀態的先后次序,分派CPU;

  當前作業或進程占用CPU,直到執行完或阻塞,才出讓CPU(非搶占方式)。

  在作業或進程喚醒后(如I/O完成),並不立即恢復執行,通常等到當前作業或進程出讓CPU。

    》適用場景

  比較有利於長作業,而不利於短作業。因為長作業會長時間占據處理機。

  有利於CPU繁忙的作業,而不利於I/O繁忙的作業。

2.短作業(進程)優先調度算法

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

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

1.優先權調度算法的類型

為了照顧緊迫型作業,使之在進入系統后便獲得優先處理,引入了最高優先權優先(FPF)調度算法。此算法常被用於批處理系統中,作為作業調度算法,也作為多種操作中的進程調度算法,還可用於實時系統中。當把該算法用於作業調度時,系統將從后備隊列中選擇若干個優先權最高的作業裝入內存。當用於進程調度時,該算法是把處理機分配給就緒隊列中優先權最高的進程,這時,又可進一步把該算法分成如下兩種。

1) 非搶占式優先權算法

在這種方式下,系統一旦把處理機分配給就緒隊列中優先權最高的進程后,該進程便一直執行下去,直至完成;或因發生某事件使該進程放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的進程這種調度算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。

2) 搶占式優先權調度算法

在這種方式下,系統同樣是把處理機分配給優先權最高的進程,使之執行。但在其執行期間,只要又出現了另一個其優先權更高的進程,進程調度程序就立即停止當前進程(原優先權最高的進程)的執行,重新將處理機分配給新到的優先權最高的進程。因此,在采用這種調度算法時,是每當系統中出現一個新的就緒進程i 時,就將其優先權Pi與正在執行的進程j 的優先權Pj進行比較。如果Pi≤Pj,原進程Pj便繼續執行;但如果是Pi>Pj,則立即停止Pj的執行,做進程切換,使i 進程投入執行。顯然,這種搶占式的優先權調度算法能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對性能要求較高的批處理和分時系統中。

2.高響應比優先調度算法

在批處理系統中,短作業優先算法是一種比較好的算法,其主要的不足之處是長作業的運行得不到保證。如果我們能為每個作業引入前面所述的動態優先權,並使作業的優先級隨着等待時間的增加而以速率a 提高,則長作業在等待一定的時間后,必然有機會分配到處理機。該優先權的變化規律可描述為:
操作系統
由於等待時間與服務時間之和就是系統對該作業的響應時間,故該優先權又相當於響應比RP。據此,又可表示為:
操作系統
由上式可以看出:

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

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

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

1.輪轉(round robin。RR)調度算法

在分時系統中,最簡單最常用的是時間片的輪轉調度算法,該算法采用了非常公平的處理機分配方式,即讓就緒隊列上的每個進程僅運行一個時間片。

>輪轉法的基本原理

系統將所有就緒進程按FCFS策略排成就緒隊列。系統每隔一段時間產生一次間斷,去激活進程調度程序進行調度,把CPU分配給隊首進程,並令其執行一個時間片

若一個時間片還未用完,進程便已完成就立即激活調度程序,將他從就緒隊列中刪除。

若一個時間片用完,計時器中斷處理程序被激活,調度程序將它送往就緒隊列末尾。

》時間片長度的確定:

  時間片長度變化的影響

  過長->退化為FCFS算法,進程在一個時間片內都執行完,響應時間長。

  過短->用戶的一次請求需要多個時間片才能處理完,上下文切換次數增加,響應時間長。

      一個較為可取的時間片的大小是略大於一次典型的交互所需時間,是大多數交互程序能在一個時間片內完成。

  對響應時間的要求:T(響應時間)=N(進程數目)*q(時間片)

  就緒進程的數目:數目越多,時間片越小

  系統的處理能力:應當使用戶輸入通常在一個時間片內能處理完,否則使響應時間,平均周轉時間和平均帶權周轉時間延長。

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

前面介紹的各種用作進程調度的算法都有一定的局限性。如短進程優先的調度算法,僅照顧了短進程而忽略了長進程,而且如果並未指明進程的長度,則短進程優先和基於進程長度的搶占式調度算法都將無法使用。而多級反饋隊列調度算法則不必事先知道各種進程所需的執行時間,而且還可以滿足各種類型進程的需要,因而它是目前被公認的一種較好的進程調度算法。在采用多級反饋隊列調度算法的系統中,調度算法的過程如下所述。

(1) 應設置多個就緒隊列,並為各個隊列賦予不同的優先級。第一個隊列的優先級最高,第二個隊列次之,其余各隊列的優先權逐個降低。該算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,為每個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。

(2) 當一個新進程進入內存后,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,便可准備撤離系統;如果它在一個時間片結束時尚未完成,調度程序便將該進程轉入第二隊列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二隊列中運行一個時間片后仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(進程)從第一隊列依次降到第n隊列后,在第n 隊列便采取按時間片輪轉的方式運行。

(3) 僅當第一隊列空閑時,調度程序才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,才會調度第i隊列中的進程運行如果處理機正在第i隊列中為某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶占正在運行進程的處理機,即由調度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。

優點:

  為提高系統吞吐量和縮短平均周轉時間而照顧短進程。

  為獲得較好的I/O設備利用率和縮短響應時間而照顧I/O型進程。

  不必估計進程的執行時間,動態調節


免責聲明!

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



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