1. 程式人生 > >作業系統--處理機排程

作業系統--處理機排程

4 處理機排程

4.1 排程型別

    作業系統必須為多個程序的競爭請求分配計算機資源。處理機排程的任務就是選出待分派的作業或程序,為之分配處理機。

    為了便於處理機排程管理,通常在處理機排程中採用分級排程方式,其中包括以下3級排程:
1. 作業排程

    作業排程,又稱高階排程。其主要功能是根據一定的演算法,從輸人的一批作業中選出若干個作業,分配必要的資源,如記憶體、外設等,為它建立相應的使用者作業程序和為其服務的系統程序(如輸人、輸出程序),最後把它們的程式和資料調人記憶體,等待程序排程程式對其執行排程,並在作業完成後作善後處理工作。

2. 交換排程

    交換排程,又稱中級排程。為了使記憶體中同時存放的程序數目不至於太多,有時就需要把某些程序從記憶體中移到外存上,以減少多道程式的數目,為此設立了中級排程。特別在採用虛擬儲存技術的系統或分時系統中,往往增加中級排程這一級。所以中級排程的功能是在記憶體使用情況緊張時,將一些暫時不能執行的講程從記憶體對換到外存上等待。當以後記憶體有足夠的空閒空間時,再將合適的程序重新換人記憶體,等待程序排程。引人中級排程的主要目的是為了提高記憶體的利用率和系統吞吐量。它實際上就是儲存器管理中的對換功能。

3.程序排程

    程序排程,又稱低階排程。其主要功能是根據一定的演算法將CPU分派給就緒佇列中的一個程序。執行低階排程功能的程式稱做程序排程程式,由它實現CPU在程序間的切換。程序排程的執行頻率很高,在分時系統中往往幾十毫秒就要執行一次。程序排程是作業系統中最基本的一種排程。在一般型別的作業系統中都必須有程序排程,而且它的策略的優劣直接影響整個系統的計能。

4.2 程序排程

    程序排程的主要功能是按照某種原則決定就緒佇列中的哪個程序能夠獲得處理機,並將處理機出讓給它進行工作。處理機分配任務是由程序排程程式完成的,它是作業系統最為核心的部分,執行十分頻繁,並常駐記憶體工作。

    繼承排程的實現過程主要分為3步:

1. 儲存現場

    當前執行的程序呼叫程序排程程式時,表示該程序要求放棄CPU(因時間片用完或等待I/O等原因)。這時,程序排程程式把它的現場資訊(如程式計數器及通用暫存器的內容等)保留在該程序PCB的現場資訊區中。

2. 挑選程序

    根據一定的排程演算法(如優先順序演算法),從就緒佇列中選出一個程序,把它的狀態改為執行狀態,準備把CPU分配給它。

3. 恢復現場

    為選中的程序恢復現場資訊,把CPU的控制權交給該程序,使它接著上次間斷的地方繼續執行。

4.2.1 引起程序排程的原因

    什麼時候需要執行程序排程呢?一般在以下事件發生後要執行程序排程:

1)當前執行程序結束。因任務完成而正常結束,或者因出現錯誤而異常結束。

2)當前執行程序因某種原因,如I/O請求,P操作、阻塞原語等,從執行狀態進入阻塞狀態。

3)執行完系統呼叫等系統程式後返回使用者程序,這時可以看作系統程序執行完畢,從而可以排程一個新的使用者程序。

4)在採用搶佔排程方式的系統中,一個具有更高優先順序的程序要求使用處理器,則使當前執行程序進入就緒佇列(這與排程方式有關)。

5)在分時系統中,分配給該程序的時間片已用完(這與系統型別有關)。

4.2.2  程序排程的方式

   程序排程方式是指當前一個程序正在處理器上執行,若有某個更為重要或緊迫的程序需要進行處理,此時應該如何分配處理器。

1. 非搶佔式排程方式(Non-preemptive)

    非搶佔式排程方式是指當一個程序正在處理器上執行時,即使有某個更為重要或緊迫的程序進入就緒佇列,仍然讓正在執行的程序繼續執行,直到該程序完成或發生某種事情而進入阻塞狀態時,才把處理器分給該重要或緊迫的程序。

2.搶佔式排程方式(preemptive

    搶佔式排程方式是指當一個程序正在處理器上執行時,若有某個更為重要或緊迫的程序需要使用處理器,則立即暫停正在執行的程序,將處理器分配給這個更為重要或緊迫的程序。

4.3 排程準則

    為了衡量排程演算法的效能,人們提出了一些評價準則,主要有以下幾點。

1.CPU利用率

    CPU利用率是指CPU做有效工作的時間比例。即CPU利用率=CPU有效工作時間/CPU總的執行時間,CPU總的執行時間=CPU有效工作時間+CPU空閒等待時間。

2.系統吞吐量

    系統吞吐量表示單位時間內完成作業的數量,系統吞吐量越大越好。長作業由於要佔用較長的CPU處理時間,因此會導致吞吐量下降,對於短作業則相反。

3.就緒等待時間

     就緒等待時間是指每個程序在就緒佇列中的等待時間。

4.響應時間

     響應時間是指從提出請求到第一次迴應的時間。

5.週轉時間

    週轉時間是指每個程序從提出請求到執行完成的時間。

4.4 排程演算法

    排程演算法是指根據系統的資源分配策略所規定的資源分配方法。

4.4.1 批處理系統中採用的排程演算法

1. 先來先服務

    先來先服務(First Come First Serve,FCFS)是按照先進先出(First In First Out,FIFO)的思想設計的,按照程序就緒的先後順序使用CPU,是一種非搶佔式排程方式。

    FCFS演算法既可用於作業排程,又可用於程序排程。

    優缺點:公平,實現簡單,有利於長程序和CPU繁忙型作業,但是不利於短程序和I/O繁忙型作業。

2. 最短作業優先

    短作業優先(Shortest Job First)是對FCFS演算法的的改進,其目的是減少平均週轉時間。採用該演算法分配CPU時,選擇所需處理時間最短的程序。

3. 最短剩餘時間優先

    最短剩餘時間優先(Shortest Remaining Time First)是把SJF演算法改為搶佔式,即當一個新就緒的程序比當前執行程序具有更短的完成時間時,系統搶佔當前程序,選擇新就緒的程序執行。

4. 最高響應比優先

    最高響應比優先是一個綜合的演算法啊,既考慮作業等待時間,又考慮作業執行時間,排程時,首先計算每個程序的響應比R,總是選擇R最高的程序執行。

    響應比R=週轉時間/處理時間=(處理時間+等待時間)/處理時間=1+(等待時間/處理時間)。

4.4.2 互動式系統的排程演算法

1. 優先順序排程

    優先順序排程(Priority Scheduling,PS)演算法是從就緒佇列中選出優先順序最高的程序,讓它在CPU上執行。該演算法的核心問題是如何確定程序的優先順序。

    通常:系統程序優先順序高於使用者程序;前臺程序優先順序高於後臺程序;作業系統更偏好 I/O型程序。

    優先順序可以是靜態不變的,也可以動態調整。

2. 時間片輪轉法

    時間片輪轉法(Round-Robin,RR)的實現思想是:將系統中所有的就緒程序按照FCFS原則,排成一個佇列。每次排程時將CPU分派個隊首程序,讓其執行一個時間片。把就緒佇列看成一個環狀結構,排程程式按時間片長度輪流排程就緒佇列中的每一程序,使每一程序都有機會獲得相同長度的時間佔用處理機執行。在一個時間片結束時,發生時鐘中斷。排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前的隊首程序。程序可以未使用完一個時間片就出讓CPU(如阻塞)。

    優缺點:

優點:簡單易行,平均響應時間短。

缺點:不利於處理緊急作業。

3. 多級佇列法

    多級佇列(Multilevel Queue,MQ)排程演算法把就緒佇列劃分成幾個單獨的佇列,一般根據程序的某些特性,如佔有記憶體大小、程序優先順序和程序型別,永久性地把各個程序分別鏈入不同的佇列中,每個佇列都有自己的排程演算法。

4. 多級反饋佇列法

    多級反饋佇列法(Multilevel Feedback Queue,MFQ)是