程序排程演算法

2021-08-28 11:02:22 字數 2420 閱讀 9389

在作業系統中存在多種排程演算法,其中有的排程演算法適用於作業排程,有的排程適用於程序排程,有的排程演算法兩者都適用。

程序排程演算法:在系統角度來說,公平性:每個程序(不論優先順序)都會有機會被執行;較大的吞吐量。使用者角度:及時性:響應速度快;較短的周轉時間,不應當讓使用者等待時間過長。

常見的排程演算法:

1.時間片輪轉法:在分時系統中,都採用時間片輪迴轉法。簡單輪迴法:系統將所有就緒程序按fifo規則排隊,按一定時間間隔把處理機分配給佇列中的程序。這樣,就緒佇列中所有程序均獲得乙個時間片的處理機而執行。

特點:在時間片輪轉排程演算法中,時間片的大小對系統效能的影響很大。如果時間片足夠大,以至於所有程序都能在乙個時間片內執行完成,則時間片輪轉排程演算法就退化為先來先服務排程演算法。如果時間片很小,那麼處理機將在程序間過於頻繁切換,使處理機的開銷增大,而真正用於執行使用者程序的時間將減少。因此時間片的大小應選擇適當。

2.多級佇列方法:將系統中所有程序分為若干類,每類為 一級。

3.多級反饋佇列:<1>應設定多個就緒佇列,並為各個佇列賦予不同的優先順序。第乙個佇列優先順序最高,第二個佇列次之,其餘佇列優先順序逐個降低。該演算法賦予各個佇列中程序執行時間片的大小也各有不同,在優先順序越高的佇列中,為每個程序所規定的時間片就越小。例如,第二個佇列的時間片要比第乙個佇列的時間片長一倍.......,第i+1佇列放入時間片要比第i個佇列的時間片長一倍。<2>當乙個程序進入記憶體後,首先將它放入第一佇列的末尾,按fcfs原則排隊等待排程。當輪到該程序執行時,如它能在該時間片內完成,便可準備撤離系統;如它在第乙個時間片結束時尚未完成,排程程式便可將該程序轉入第二個佇列的末尾,再同樣的按fcfs原則等待排程執行;如果它在第二個佇列中執行的乙個時間片後仍未完成,再依次將它放入第三佇列,......,如此下去,當乙個長作業(程序)從第一佇列降低到第n佇列後,在第n佇列便採用時間片輪轉的方式執行。<3>僅當第一佇列空閒時,排程程式才排程第二佇列中的程式執行;僅當1~(i-1)佇列均空閒時,才會排程第i佇列中的程序執行。如果處理機正在第i佇列中為某程序服務時,又有新程序進入優先權較高的的佇列(第1~(i-1)中的任何乙個佇列),則此時新程序將搶占正在執行的程序的處理機,即由排程程式把正在執行的程序放回到第i佇列的末尾,把處理機分配給新到的優先權程序。

特點:終端型作業使用者:短作業優先。短批處理作業使用者:周轉時間較短。長批處理作業使用者:經過前面幾個佇列得到部分執行,不會長期得不到處理。

4.最短程序優先排程演算法(sjpf):短程序優先(spf)排程演算法則是從就緒佇列中選出乙個估計執行時間最短的程序,將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新排程。 

特點:該演算法對長作業不利,會使長作業的週期時間增加。更嚴重的是,如果有一長作業進入系統的後備佇列,由於排程程式總是優先排程那些短作業(即使是後來的),導致長作業長期不被排程。該演算法完全未考慮作業的緊迫程度,因而不能保證緊迫性的作業會被及時處理。由於作業的長短只是根據使用者所提供的估計時間而定的,而使用者又會有意無意的縮短其作業估計執行時間,致使該演算法不一定能真正做到短作業優先排程。

5.最高響應比優先:在批處理系統中,短作業優先演算法是一種比較好的演算法,其主要的不足之處是長 作業的執行得不到保證。如果我們能為每個作業引入前面所述的動態優先權,並使作業的優先順序隨著等待時間的增加而以速率a提高,則長作業在等待一定的時間後,必然有機會分配到處理機。該優先權的變化規律可描述為:等待時間與服務時間之和就是系統對該作業的響應時間,故該優先權又相當於響應比rp。相應比的變化規律可描述為:響應比rp=(等待時間+要求服務時間)/要求服務時間

由上式可以看出:

<1>如果作業的等待時間相同,則要求服務的時間越短,其優先順序越高,因此該演算法有利於短作業。

<2>當要求服務的時間相同時,作業的優先權決定其等待時間,等待時間越長,其優先順序越高,因而它實現的是先來先服務。

<3>對於長作業,作業的優先順序可以隨等待時間的增加而提高,當其等待時間足夠長,其優先順序便可公升到很高,從而也可獲得處理機。簡言之,該演算法既照顧了短作業,又考慮了作業到達的先後次序,不會使長作業長期得不到服務。因此,該演算法實現一種較好的折衷。當然,在利用該演算法時,每要進行排程之前,都須先做到相應比的計算,這回增加系統開銷。

6.先來先服務(fcfs)排程演算法:是一種最簡單的排程演算法,該演算法既可以用於作業排程,也可以用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將他們調入記憶體,為他們分配資源,建立程序,然後放入就緒佇列。在程序排程中採用fcfs演算法時,每次排程是從就緒佇列中選擇乙個最先進入該佇列。

特點:演算法簡單,但效率低,對於長作業比較有利,但對於短作業不利(相比於sjf和高響應比);有利於cpu繁忙型作業,而不利於i/o繁忙型作業。

模擬時間片的程式:

使用**模擬實現殭屍程序, 孤兒程序的場景

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程演算法

排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...

程序排程演算法

先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...