常見的作業排程和程序排程演算法

2021-09-24 05:41:24 字數 2013 閱讀 8333

接下來我們分別講解一下幾種常見演算法以及它們適用的排程型別。

演算法思想

演算法規則

適用排程型別

是否可以搶占

優點缺點

是否會飢餓

主要從公平的角度考慮

按照作業/程序到達的先後順序進行排程 ,即:優先考慮在系統中等待時間最長的作業

程序排程和作業排程

非搶占式演算法

滿足公平原則,且演算法容易實現,比較利於長作業/程序

排在長程序後的短程序的等待時間大,而且帶權周轉時間大,不利於短作業/程序

不會在這裡我們需要注意一下:短程序排程演算法簡稱為spf

演算法思想

演算法規則

適用排程型別

是否可以搶占

優點缺點

是否會飢餓

實際上,短程序/作業(要求服務時間最短)在實際情況中占有很大比例,為了使得它們優先執行,追求最少的平均等待時間時間、平均周轉時間、平均帶權周轉時間

要求服務時間最短的程序/作業優先得到服務

程序排程和作業排程

非搶占式演算法,但是也有搶占式版本,即:最短剩餘時間優先演算法(srtn)

可以得到最少的平均等待時間時間、平均周轉時間、平均帶權周轉時間

不公平,對長作業不友好,對短作業友好

會(短作業優先可能導致長作業一直得不到處理)

演算法思想

演算法規則

適用排程型別

是否可以搶占

優點缺點

是否會飢餓

綜合考慮等待時間和執行時間

程序排程和作業排程

非搶占式演算法

綜合考慮了等待時間和要求服務時間,在等待時間相同時,要求服務的時間愈短,其優先權愈高,擁有sjf的優點,在要求服務時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,擁有fcfs的優點

需要計算優先權,增加了系統的開銷

不會演算法思想

演算法規則

適用排程型別

是否可以搶占

優點缺點

是否會飢餓

公平的、輪流的為各個程序服務,讓每個程序在一定時間間隔內都可以得到響應

系統根據fcfs策略,將所有的就緒程序排成乙個就緒佇列。輪流讓各個程序執行乙個時間片的,若程序未在乙個時間片內執行完,則被剝奪處理機,將程序放到就緒佇列隊尾重新排隊。

程序排程

搶占式演算法

公平、響應快,適用於分時作業系統

由於高頻率的程序切換,增加了開銷,並且它不區分任務的緊急程度

不會補充:時間片大小的確定

演算法思想

演算法規則

適用排程型別

是否可以搶占

優點缺點

是否會飢餓

根據任務的緊急程度進行排程

排程時選擇優先順序最高的作業/程序,為其分配處理機

程序排程、作業排程、i/o排程

搶占式演算法和非搶占式演算法

用優先順序區分任務的緊急程度,適用於實時作業系統。

如果有源源不斷的高優先順序程序到來,那麼低優先順序的程序可能會飢餓

會補充:

1、優先順序是利用某一範圍內的整數來表示的,又把該整數稱為優先數(優先數的大小並不一定和優先順序成正比)。確定優先順序大小的依據如下;

演算法思想

演算法規則

適用排程型別

是否可以搶占

優點缺點

是否會飢餓

對以上排程演算法的權衡和彌補

1、設定多個就緒佇列,各級佇列的優先順序由高到低,時間片從小到大;2、新程序到達時先進入第一級佇列,按照fcfs的原則排隊等待被分配時間片,若時間片已經用完程序還沒結束,則程序進入下一級隊尾,如果此時程序已經在最低一級的佇列,則將其重新放回該佇列的隊尾;3、只有第k級隊列為空時,才會為第k+1級佇列分配時間片

程序排程

搶占式演算法,當第k級佇列在執行過程中,若更上級的佇列到來了乙個新程序,由於優先順序問題,新程序會搶占處理機,並將原來執行的程序放回第k級佇列的隊尾

對各種型別的程序都比較公平,每個新到達的程序都會很快得到響應,短程序只用較少的時間就可以完成,不用估計程序的執行時間。

/可能會導致飢餓,概率不大

常見程序排程演算法

程序排程 實質是一種資源分配。決定將cpu分配給就緒佇列中的某個程序。發生程序排程原因 1 正在執行的程序執行完畢 2 執行中的程序因發生i o請求或等事件而暫停執行 3 時間片用完 4 在程序通訊或同步過程中執行了某項原語操作,如p操作 wait操作 5 高優先順序進入。作業排程 簡單來說就是決定...

作業 程序排程演算法

排程實質是一種資源分配,排程程式從記憶體中選擇乙個可執行的程序,為之分配cpu。作業從進入系統到後備佇列,再從執行到結束退出系統為止,期間經過不同級別的排程 高階排程又長程排程或作業排程。是將在外存上處於後備佇列中的作業調入記憶體,為其建立程序 分配資源 放入就緒佇列。外存 記憶體 中級排程又稱記憶...

作業排程和程序排程的區別

處理機排程是作業系統的主要功能之一,它的實現策略決定了作業系統的型別,其排程演算法的優劣直接影響整個系統的效能。處理機排程的任務是選出待分派的作業或程序,為之分配處理機。一般來說,處理機排程可分為三個級別,分別是高階排程 中級排程和低階排程。高階排程又稱作業排程,作業就是使用者程式及其所需的資料和命...