處理機排程 排程演算法

2022-06-30 10:45:11 字數 3248 閱讀 8171

將使用者作業和就緒程序按提交順序或變為就緒狀態的先後排成佇列,按照先來先服務的方式進行排程處理。

1.直**,該演算法在一般意義下是公平的。即每個作業或程序都按照它們在佇列中等待時間長短決定它們是否優先享受服務

2.但如果執行時間較短的作業或程序在某些執行時間很長的作業或程序之後到達,則它們將等待很長時間

基本思路是讓每個程序在就緒佇列中的等待時間與享受服務的時間成比例

將cpu的處理時間分成固定大小的時間片。如果乙個程序在被排程選中之後用完了系統規定的時間片,但未完成要求的任務,則它自行釋放自己所占有的cpu而排到就緒佇列的末尾,等待下一次排程。同時,程序排程程式又去排程當前就緒佇列中的第乙個程序或作業。

輪轉法只能用來排程分配那些可以搶占的資源。將它們隨時剝奪再分配給別的程序

例子:作業排程不使用輪轉法:

由於作業排程是對除了cpu之外的所有系統硬體資源的分配,其中包含有不可搶占資源,所以作業排程不使用輪轉法

時間片長度的選擇會直接影響系統開銷和響應時間

過短的問題:如果時間片長度過短,則排程程式剝奪處理機的次數增多。這將使程序上下文切換次數也大大增加,從而加重系統開銷

過長的問題:如果時間片長度選擇過長,例如乙個時間片能保證就緒佇列中所需執行時間最長的程序能執行完畢,則輪轉法變成了先來先服務法

由於時間片的選取要滿足相應時間的要求,所以是有如下的關係:

q=r/nmax

r:系統對響應時間的要求r

nmax:就緒佇列中所允許的最大程序數nmax

相應的關係:

1.在q為常數的情況下,如果就緒佇列中的程序數遠小於nmax,則響應時間r看上去會大大減小

2.由於q值固定,從而程序上下文切換的時機不變,系統開銷也不變。

3.cpu的整個執行時間等於各程序執行時間加上系統開銷。在程序執行時間大幅度減少的情況下,如果系統開銷也隨之減少的話,系統的響應時間有可能更好一點。

為什麼需要時間片p可以變化:

隨著程序執行,就緒佇列中的程序逐漸減小到只剩乙個程序,這時候時間片恰好分配為正好讓這個程序執行結束,這樣減少

可變的時間片p值:

一種可行的辦法是,每當一輪排程開始時,系統根據就緒佇列中已有程序數目計算一次q值,作為新一輪排程的時間片.

1.分給程序的時間片用完,但程序還未完成,回到就緒佇列的末尾等待下次排程繼續執行。

2.分給該程序的時間片未用完,只是因為請求i/o或由於程序的互斥與同步關係而被阻塞。當阻塞解除之後再回到就緒佇列。

3.新建立程序進入就緒佇列。

1.將就緒佇列按照程序到達就緒佇列的型別和程序被阻塞時的阻塞原因分成不同的就緒佇列

2.每個佇列按fcfs原則排列,各佇列之間的程序享有不同的優先順序,但同一佇列內優先順序相同

3.當乙個程序在執行完它的時間片之後,或從睡眠中被喚醒以及被建立之後,將進入不同的就緒佇列。

按某種原則為作業或程序指定乙個優先順序來表示該作業或程序所享有的排程優先權

靜態法根據作業或程序的靜態特性,在作業或程序開始執行之前就確定它們的優先順序,一旦開始執行之後就不能改變

動態法將作業或程序的靜態特性和動態特性結合起來確定作業或程序的優先順序,隨著作業或程序的執行過程,其優先順序不斷變化。

使用者根據作業的緊急程度輸入乙個適當的優先順序。為防止各使用者都將自己的作業冠以高優先順序,系統對高優先順序使用者收取較高的費用。

由系統或操作員根據作業型別指定優先順序。作業型別(i/o繁忙的作業,cpu繁忙的作業,i/o與cpu均衡的作業,一般作業等)一般由使用者約定或由操作員指定。

系統根據作業要求資源情況(所需處理機時間、記憶體量大小、i/o裝置型別及數量等)確定優先順序

1.使用者程序vs系統程序

使用者程序

系統程序:

2.將作業的靜態優先順序作為它所屬程序的優先順序

1.根據程序占有cpu時間的長短決定

乙個程序占有處理機的時間愈長,則在被阻塞之後再次獲得排程的優先順序就越低,反之,其獲得排程的可能性就會越大

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

乙個就緒程序在就緒佇列中等待的時間越長,則它獲得排程選中的優先順序就越高

確定優先順序開銷問題:由於動態優先順序隨時間推移而變化,系統要經常計算各程序的優先順序,因此付出一定的開銷

解決新程序放入就緒佇列末尾享受平等的處理機時間片,這對於執行時間長的程序來說是不公平的問題,由於它需要多個時間片才能完成

劃分為兩個佇列:

新建立程序:線性優先順序排程策略將新建立程序按fcfs方式排成就緒佇列

舊程序也就是享受過時間片的程序:其他已得到過時間片服務的程序也按fcfs方式排成另乙個就緒佇列或稱享受服務佇列

1.設新建立程序佇列中程序的優先順序以速率a (a>0)增加。

2.設享受服務佇列中程序的優先順序以速率b (a>b>0 )增加

設某一程序在時刻t1被建立,則時刻t該程序的優先順序為p(t)=a×(t-t1) (t1又設該程序在t1′時刻轉入享受服務程序佇列,則時刻t該程序的優先順序變為p(t)=a× (t1′-t1)+b× (t-t1′) (t1′何時新建立程序等待多長時間之後進入享受服務佇列?

1.當新建立程序就緒佇列中的頭乙個程序的優先順序與與享受服務佇列中最後乙個就緒程序的優先順序相等時,新建立程序佇列中的頭乙個程序可以轉入享受服務程序佇列

也就是兩個函式相交的時候,即p(t)=a*(t-t2)=a× (t1′-t1)+b× (t-t1′)

2.當享受服務程序隊列為空時,新建立程序佇列的頭乙個程序也將移入享受服務程序佇列

為什麼享受佇列中的程序優先順序增加速率b要比新建立程序優先順序增長率a低呢?

2.a>b=0,線性優先順序排程策略即輪轉法排程方式。線性優先順序排程策略是介於輪轉法和fcfs方式之間的一種排程策略

選擇需要執行時間最短的作業投入執行,為它們建立程序和分配資源

吞吐量高:直觀上來說,採用最短作業優先的排程演算法,可使得系統在同一時間內處理的作業個數最多,從而吞吐量就於其他排程方式。

但是,對於乙個不斷有作業進入的批處理系統來說,最短作業優先法有可能使得那些長作業永遠得不到排程執行的機會

1.輪轉法在響應時間上優於fcfs排程方式

2.對於需要服務時間短的顧客,輪轉法響應時間《線性優先法響應時間

3.對於需要服務時間長的顧客,fcfs響應時間《線性優先法響應時間《輪轉法響應時間

處理機排程 排程演算法

先來先服務 fcfs 排程演算法 短作業 程序 優先排程演算法sjf spf 根據作業的長短在就緒佇列中排好隊,若採取非搶占方式則根據佇列順序依次執行 若為搶占方式,時間片完或新程序的作業比執行態的作業長度短,則搶占當前正在執行的程序,被搶占程序按照時間長短在就緒佇列排隊等待。特別注意就緒佇列中的排...

處理機排程 排程演算法

將使用者作業和就緒程序按提交順序或變為就緒狀態的先後排成佇列,按照先來先服務的方式進行排程處理。1.直 該演算法在一般意義下是公平的。即每個作業或程序都按照它們在佇列中等待時間長短決定它們是否優先享受服務 2.但如果執行時間較短的作業或程序在某些執行時間很長的作業或程序之後到達,則它們將等待很長時間...

處理機排程演算法!

include include typedef structnode typedef struct nodelnode void delay int i void len queue lnode hpt,node x if q null r link p else if r q else void ...