1. 程式人生 > >第三章 處理機排程與演算法

第三章 處理機排程與演算法

一,處理機排程

      多道程式環境下,動態的把處理機分配給就緒佇列中的一個程序使之執行。

      作用:提高處理機的利用率、改善系統性能,很大程度上取決於處理機排程的效能。

二,處理機排程的基本概念

      作業進入系統駐留在外存的後備佇列上,再至調入記憶體執行完畢,可能要經歷下述三級排程。

           1.高階排程(High Scheduling)

             又稱作業排程或長程排程(Long-Term Scheduling),接納排程(Admission Scheduling)

            主要在早期批處理階段,處理在外存上的作業。 決定外存後備佇列中的哪些作業調入記憶體; 為它們建立程序、分配必要的資               源; 將新建立的程序排在就緒佇列上,準備執行。

           2.中級排程(Intermediate-Level Scheduling)

           又稱交換排程或中程排程(Medium-Term Scheduling)

          引入目的:提高記憶體利用率和系統吞吐量。根據條件將一些程序調出或再調入記憶體。

           3.低階排程(Low Level Scheduling)

             也稱為程序排程、微觀排程或短程排程(Short-Term Scheduling)

            決定記憶體就緒佇列中的哪個程序獲得處理機,進行分配工作。是最基本的一種排程,在三種基本OS中都有。

三,程序排程方式

           1非搶佔方式(Non-preemptive Mode)         

              一旦處理機分配給某程序,該程序一直執行。決不允許其他程序搶佔已分配執行程序的處理機。

           排程時機:程式完成; 發生某事件阻塞;

           特點:實現簡單、系統開銷小; 功能也簡單,適用於大多數批處理OS,但在要求較嚴格的實時系統,不宜採用該方式

           2搶佔方式(Preemptive Mode)

             允許排程程式根據某種原則,暫停某個正在執行的程序,將處理機重新分配給另一程序。

            排程時機:程式完成; 發生某事件阻塞;新程序就緒;

            特點:搶佔的原則有很多種:優先權高的可以搶佔優先順序低的程序的處理機。短作業(程序)可以搶佔長作業(程序)                 的處理機。各程序按時間片執行,一個時間片用完時重新進行排程。

四,程序排程演算法

    1、先來先服務排程演算法FCFS

            一種最簡單的排程演算法,按先後順序進行排程。既可用於作業排程,也可用於程序排程。 按照作業提交,或程序變為就緒狀態的先後次序分派CPU; 新作業只有噹噹前作業或程序執行完或阻塞才獲得CPU執行 被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序出讓CPU。 (所以,預設即是非搶佔方式)

         不足:不利於短作業

  2. 短作業(程序)優先排程演算法SJF/SPF

     優點: 通過上表可見採用SJF/SPF演算法,平均週轉時間、平均帶權週轉時間都有明顯改善。SJF/SPF排程演算法能有效的降低作業的平均等待時間,提高系統吞吐量。

     不足:1). 對短作業有利,但同時造成了對長作業的不利。      

                2).由於作業(程序)的長短含主觀因素,不一定能真正做到短作業優先。

                3).未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)的及時處理。

  3. 高優先權優先排程演算法HPF

        照顧緊迫性作業,使其獲得優先處理而引入排程演算法。常用於批處理系統中的作業排程演算法,以及多種作業系統中的程序排程演算法

    優先權的型別

         靜態優先權:建立程序時確定,整個執行期間保持不變。一般利用某一範圍的一個整數來表示,又稱為優先數。

         動態優先權:建立程序時賦予的優先權可隨程序的推進或隨其等待時間的增加而改變。

  4,高響應比優先排程演算法HRRN

       短作業優先演算法是一種比較好的演算法(相當於根據作業長度設定的靜態優先權演算法),適用於短作業較多的批處理系統中,         其主要不足是長作業的執行得不到保證。

       HRRN為每個作業引入動態優先權,使作業的優先順序隨著等待時間的增加而以速率a提高:  

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

                   = 響應時間 / 要求服務時間

 5. 基於時間片的輪轉排程演算法RR

   將系統中所有的就緒程序按照FCFS原則,排成一個佇列。 每次排程時將CPU分派給隊首程序,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。 在一個時間片結束時,發生時鐘中斷。 排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前就緒的隊首程序。

6,多級反饋佇列演算法FB

1)設定多個就緒佇列,各佇列有不同的優先順序,優先順序從第一個佇列依次降低。

2) 賦予各佇列程序執行時間片大小不同, 優先權越高,時間片越短。

 僅當優先權高的佇列(如第一佇列)空閒時,排程程式才排程第二佇列中的程序執行;僅當第1~(i-1)佇列均空時,才會排程第i佇列中的程序執行。