常用程序排程演算法的分析與評價

2021-05-23 20:00:36 字數 3953 閱讀 5439

《計算機與資訊科技》

本文詳細地討論了四種常用程序排程演算法的基本思想,並對其進行了分析和評價。

程序排程演算法,分析,評價

1引言

程序排程是系統內部的低階排程,程序排程的策略通常有先來先服務演算法、時間片輪轉演算法、最高優先權優先排程演算法、最短程序優先排程演算法等。衡量程序排程效能通常需要從定性和定量兩個方面來綜合考慮。

2程序排程演算法評價依據

程序排程效能的衡量方法可以分為定性和定量兩種,在定性衡量方面,首先是排程的安全性。比如,一次程序排程是否可能引起資料結構的破壞等。這要求對排程時 機的選擇和儲存cpu現場十分小心。另外,系統開銷也是衡量程序排程的乙個重要指標,由於排程程式的執行涉及到多個程序的上下文切換,如果排程策略過於繁 瑣和複雜,將會耗去較大的系統開銷。這在使用者程序排程系統呼叫較多的情況下,將會造成響應時間大幅度增加。

程序排程的定量評價包括cpu的利用率評價、程序在就緒佇列中的等待時間與執行時間之比等。實際上,由於程序進入就緒佇列的隨機模型很難確定,而且程序上 下文切換等也將影響程序的執行效率,從而對程序排程進行解析是很困難的,一般情況下,大多利用模擬或測試系統響應時間的方法來評價程序排程的效能。

3四種常用程序排程演算法的分析與評價

3.1先來先服務演算法

3.1.1演算法思想

該演算法思想是按照進入就緒佇列的先後次序來分配處理機。fcfs採用非剝奪排程方式,即一旦某個程序占有處理機,就一直執行下去,直到該程序完成其工作或因等待某一事件而不能繼續執行時才釋放處理機。

3.1.2演算法實現原理圖

該演算法實現原理圖如圖1所示。

說明:ready表示就緒佇列,pi 表示新進入佇列的程序,finish表示程序執行完畢退出。

3.1.3演算法分析與評價

① 該演算法原理簡單,易於實現。

② 各程序平等競爭。

③ 由於各程序執行的時間不一樣,從而導致相對不公平現象的產生。

④ 該演算法有利於長程序,不利於短程序。

⑤ 該演算法很少用來作為主排程策略,常常用作輔助排程演算法使用

3.2最高優先權優先排程演算法

3.2.1演算法思想

該演算法的基本思想是程序優先權高者優先排程,是一種最常用的程序排程演算法。該演算法的關鍵是如何確定優先數。通常確定優先數的方法有兩種,即靜態法和動態法。

靜態優先權是在建立程序時確定的,其執行特徵是優先數確定之後在整個進行執行期間不再改變。確定靜態優先權的依據有程序的型別、程序所使用的資源、程序的估計執行時間等因素。程序所申請的資源越多,估計的執行時間越長,程序的優先權越低。程序型別不同,優先權也不同,如系統程序的優先權高於使用者程序的優先 權。

動態優先權是指在建立程序時,其執行特徵是根據系統資源的使用情況和程序的當前特點確定乙個優先權,在程序執行過程中再根據情況的變化調整優先權。動態優先權一般根據程序占有cpu時間的長短、程序等待cpu時間的長短等因素確定。占有處理機的時間越長,則優先權越低;等待時間越長,則優先權越高。

3.3.2演算法分析與評價

① 靜態優先順序排程演算法實現較為簡單,但不能反映系統以及程序在執行過程中發生的各種變化。而動態優先順序法可以滿足這個方面的需要。

② 動態優先順序排程演算法的效能一般介於時間片輪轉演算法和先來先服務演算法之間。

3.3時間片輪轉排程演算法

3.3.1

演算法思想

該演算法思想是使每個程序在就緒佇列中的等待時間與享受服務的時間成比例。即將cpu的處理時間分成固定大小的時間片,如果在執行的乙個程序把它分給它的時 間片用完了,但任務還沒有完成,則它也只能停止下來,釋放它所佔的cpu資源,然後排在相應的就緒佇列的後面去。

3.3.2演算法實現原理圖

該演算法實現原理圖如圖2所示

說明:ready表示就緒佇列,pi 表示新進入佇列的程序,finish表示程序執行完畢退出。not finish表示分配給某程序的時間片已用完但任務還沒有完成,從而插入到ready佇列尾部。

3.3.3演算法分析與評價

① 時間片的長度選擇比較困難

時間片的長度選擇比較困難是因為時間片長度的選擇直接關係到系統開銷和程序的響應時間。如果時間片長度過短→導致排程程式剝奪處理器的次數增加 →程序的上下文切換的次數增加→系統的開銷也加重;如果時間片長度過長,長到能使就緒佇列中所需要執行時間最長的程序執行完畢→輪轉法就變成了fcfs算 法→fcfs短處不足就顯示出來了。

又因為cpu的整個執行時間=各程序執行時間之和+系統開銷(各程序切換所花費的cpu時間之和,假定儲存開銷忽略不計)。即,

↙系統的響應時間。

↙就緒佇列中的程序數。

↙程序的切換時間。

↙ 計算機的處理能力,計算機的速度越高,時間片就可越短。

② 時間片長度選擇的動態性

以上僅僅作了靜態分析,通常情況下,就緒佇列裡地程序個數是不斷變化的。因此,每一次的排程都需要計算新一輪的時間片長度,不能用固定的時間片長度來進行所有程序的輪轉執行。

③ 該演算法的擴充——多級反饋輪轉法

在上面的演算法中,未對就緒佇列中的程序加以條件分析(即進入就緒佇列的因素),由於進入就緒佇列的原因不一樣,要求占用處理機的緊急程度也不一樣。主要因素有:

↙分給該程序的時間片用完,但程序還未完成。

↙ 分給其時間片未用完,而發生了i/o等請求後由阻塞態轉變成就緒態。

↙新的程序進入。

因此,根據緊急程度的不一樣,建立多個就緒佇列,同時賦予不同的的優先順序,優先權高的就緒佇列優先執行,同一就緒佇列中,優先順序相同,按照先來先服務進行 排程,執行乙個給定的時間片,如果沒有執行完成則轉入到相應的就緒佇列中去(執行一次,優先順序降低乙個等級,等待乙個時間片,則優先順序公升高乙個等級)。其 實現原理圖如圖3所示。

3.4短程序優先排程演算法

3.4.1演算法思想

該演算法的基本思想是從就緒佇列(記憶體)中選擇乙個估計執行時間最短的程序,將處理機分配給它。

3.4.2演算法分析與評價

① 該演算法能有效降低作業的平均等待時間,提高系統吞吐量。

② 對長程序不利,甚至導致長期得不到處理。

③ 該演算法完全未考慮程序的緊迫程度。

④ 程序的長短通常由某種策略估計提供,不能做到真正的短程序優先。

4結語

綜述所述,本文從演算法思想、演算法的實現原理、演算法的優缺點等幾個方面對先來先服務演算法、時間片輪轉演算法、最高優先權優先排程演算法、短程序優先排程演算法等四種程序排程演算法進行詳細地論述。

(完)

程序排程時機跟蹤分析程序排程與程序切換的過程

張磊 程序的排程時機與程序的切換 作業系統原理中介紹了大量程序排程演算法,這些演算法從實現的角度看僅僅是從執行佇列中選擇乙個新程序,選擇的過程中運用了不同的策略而已。對於理解作業系統的工作機制,反而是程序的排程時機與程序的切換機制更為關鍵。程序排程的時機 下面是整個實驗過程 網易實驗樓環境 程序切換...

排程演算法的評價指標

cpu是計算機系統中最重要和昂貴的資源之一,所以應盡可能使cpu保持 忙 狀態,使這一資源利用率最高。表示單位時間內cpu完成作業的數量。長作業需要消耗較長的處理機時間,因此會降低系統的吞吐量。短作業需要消耗的處理機時間較短,因此能提高系統的吞吐量。排程演算法和方式不同,也會對系統的吞吐量產生較大的...

程序排程與排程器及演算法

核心v2.6.23之後 程序的優先順序 總結linux核心的三種 排程策略 sched other 分時排程策略,預設的 sched fifo實時排程策略,先到先服務 sched rr實時排程策略,時間片輪轉 linux 程序排程有乙個有趣歷史。在 2.5 版本之前,linux 核心採用傳統 uni...