作業排程演算法

2021-07-11 03:42:06 字數 2795 閱讀 6808

1.先來先服務fcfs( first come first serve)是最簡單的排程演算法,按先後順序進行排程。

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

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

在作業或程序喚醒後(如i/o完成),並不立即恢復執行,通常等到當前作業或程序出讓cpu。

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

有利於cpu繁忙的作業,而不利於i/o繁忙的作業。

演算法實現原理圖:

輪轉法是讓每個程序在就緒佇列中的等待時間與享受服務的時間成正比例。

將系統中所有的就緒程序按照fcfs原則,排成乙個佇列。

每次排程時將cpu分派給隊首程序,讓其執行乙個時間片。時間片的長度從幾個ms到幾百ms。

在乙個時間片結束時,發生時鐘中斷。

排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前的隊首程序。

程序可以未使用完乙個時間片,就出讓cpu(如阻塞)。

時間片長度變化的影響

過長->退化為fcfs演算法,程序在乙個時間片內都執行完,響應時間長。

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

對響應時間的要求:t(響應時間)=n(程序數目)*q(時間片)

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

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

演算法實現原理圖:

多級反饋佇列演算法是輪轉演算法和優先順序演算法的綜合和發展。

設定多個就緒佇列,分別賦予不同的優先順序,如逐級降低,佇列1的優先順序最高。每個佇列執行時間片的長度也不同,規定優先順序越低則時間片越長,如逐級加倍。

新程序進入記憶體後,先投入佇列1的末尾,按fcfs演算法排程;若按佇列1乙個時間片未能執行完,則降低投入到佇列2的末尾,同樣按fcfs演算法排程;如此下去,降低到最後的佇列,則按「時間片輪轉」演算法排程直到完成。

僅當較高優先順序的隊列為空,才排程較低優先順序的佇列中的程序執行。如果程序執行時有新程序進入較高優先順序的佇列,則搶先執行新程序,並把被搶先的程序投入原佇列的末尾。

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

為獲得較好的i/o裝置利用率和縮短響應時間而照顧i/o型程序。

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

i/o型程序:讓其進入最高優先順序佇列,以及時響應i/o互動。通常執行乙個小時間片,要求可處理完一次i/o請求的資料,然後轉入到阻塞佇列。

計算型程序:每次都執行完時間片,進入更低階佇列。最終採用最大時間片來執行,減少排程次數。

i/o次數不多,而主要是cpu處理的程序。在i/o完成後,放回優先i/o請求時離開的佇列,以免每次都回到最高優先順序佇列後再逐次下降。

為適應乙個程序在不同時間段的執行特點,i/o完成時,提高優先順序;時間片用完時,降低優先順序。

演算法實現原理圖:

優先順序演算法是多級佇列演算法的改進,平衡各程序對響應時間的要求。適用於作業排程和程序排程,可分成搶先式和非搶先式。

作業排程中的靜態優先順序大多按以下原則確定:

由使用者自己根據作業的緊急程度輸入乙個適當的優先順序。

由系統或操作員根據作業型別指定優先順序。

系統根據作業要求資源情況確定優先順序。

程序的靜態優先順序的確定原則:

按程序的型別給予不同的優先順序。

將作業的情態優先順序作為它所屬程序的優先順序。

程序的動態優先順序一般根據以下原則確定:

根據程序占用有cpu時間的長短來決定。

根據就緒程序等待cpu的時間長短來決定。

短作業優先又稱為「短程序優先」spn(shortest process next);這是對fcfs演算法的改進,其目標是減少平均周轉時間。

對預計執行時間短的作業(程序)優先分派處理機。通常後來的短作業不搶先正在執行的作業。

(1) 優點:

比fcfs改善平均周轉時間和平均帶權周轉時間,縮短作業的等待時間;

提高系統的吞吐量;

(2) 缺點:

對長作業非常不利,可能長時間得不到執行;

未能依據作業的緊迫程度來劃分執行的優先順序;

難以準確估計作業(程序)的執行時間,從而影響排程效能。

「最短剩餘時間優先」srt(shortest remaining time)(允許比當前程序剩餘時間更短的程序來搶占)

「最高響應比優先」hrrn(highest response ratio next)(響應比r = (等待時間 + 要求執行時間) / 要求執行時間,是fcfs和sjf的折衷)

最高響應比優先法是對fcfs(先來先服務)方式和sjf(短作業優先)方式的一種綜合平衡。fcfs方式只考慮每個作業的等待時間而未考慮執行時間的長短,而sjf方式只考慮執行時間而未考慮等待時間的長短。因此,這兩種排程演算法在某些極端情況下會帶來某些不便。hrn排程策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出響應比最高的作業投入執行。

響應比r定義如下: r =(w+t)/t = 1+w/t

其中t為該作業估計需要的執行時間,w為作業在後備狀態佇列中的等待時間。每當要進行作業排程時,系統計算每個作業的響應比,選擇其中r最大者投入執行。這樣,即使是長作業,隨著它等待時間的增加,w / t也就隨著增加,也就有機會獲得排程執行。這種演算法是介於fcfs和sjf之間的一種折中演算法。由於長作業也有機會投入執行,在同一時間內處理的作業數顯然要少於sjf法,從而採用hrn方式時其吞吐量將小於採用sjf 法時的吞吐量。另外,由於每次排程前要計算響應比,系統開銷也要相應增加。

作業排程演算法

一 先來先服務 根據作業到達的先後次序安排作業的執行順序,最先到達的作業最先執行,該演算法操作最簡單,同時看起來也是最公平,因此在系統中都有應用,但是它沒有考慮作業執行時間的長短,如果最先到達的作業需要較長的時間,而稍後到達的作業只需要很短的執行時間,就會導致短作業的長時間等待,使短作業的帶權周轉的...

Hadoop作業排程演算法

hadoop集群中有三種作業排程演算法,分別為 fifo 公平排程演算法和計算能力排程演算法 fifo比較簡單,hadoop 中只有乙個作業佇列,被提交的作業按照先後順序在作業佇列中排隊,新來的作業插入到隊尾。乙個作業執行完後,總是從隊首取下乙個作業執行。這種排程策略的優點是簡單 易於實現,同時也減...

作業排程演算法總結

在典型的設計中,乙個任務有以下三種狀態 正在執行 running,正在cpu中執行 待命 ready,等待執行 阻塞 blocked,任務暫停,等待乙個事件的發生,例如接收一組資料 由於cpu在某個時間只能執行乙個任務,大部分任務,在大部分時間,處於阻塞或待命狀態。可能會有大量專案在待命列表裡等待執...