作業系統 排程演算法

2021-08-31 03:43:27 字數 1965 閱讀 5155

fcfs是最簡單的排程演算法,既可以用於作業排程,也可以用於程序排程,系統將按照作業到達的先後次序來進行排程。

sjf演算法是以作業的長短來計算優先順序,作業越短,優先順序越高。作業的長短是以作業所要求的執行時間來衡量的。可以分別用於作業排程和程序排程。

缺點:必須預知作業的執行時間

對長作業很不利,長作業的周轉時間會明顯地增長。可能使長作業等待時間過長,出現飢餓現象

在採用sjf演算法時,無法實現人機互動

不能保證緊迫性作業能得到及時處理

基於作業的緊迫程度的演算法,由外部賦予作業相應的優先順序,根據優先順序進行排程,可以保證緊迫性作業優先執行。可以分別用於作業排程和程序排程。

採用一種動態的優先順序,優先順序隨著等待時間的延長而增加,這將使長作業的優先順序在等待期間不斷地增加,等到足夠的時間後,就有機會獲得處理機。

優先順序 = (等待時間 + 要求服務時間) / 要求服務時間

由於等待時間與服務時間之和就是系統對該作業的響應時間,故該優先順序又相當於響應比rp

rp = (等待時間 + 要求服務時間) / 要求服務時間 = 響應時間 / 要求服務時間

原理:在輪轉(rr)法中,系統根據 fcfs 策略,將所有的就緒程序排成乙個就緒佇列,並可設定每隔一定時間間隔(如30 ms)即產生一次中斷,啟用系統中的程序排程程式,完成一次排程,將cpu分配給隊首程序,令其執行。當該程序的時間片耗盡或執行完畢時,系統再次將cpu分配給新的隊首程序(或新到達的緊迫程序)。由此,可保證就緒佇列中的所有程序在乙個確定的時間段內,都能夠獲得一次cpu 執行。

切換時機:

在rr排程演算法中,應在何時進行程序的切換,可分為兩種情況:

在乙個時間片用完時,計時器中斷處理程式被啟用。 如果程序尚未執行完畢,排程程式將把它送往就緒佇列的末尾。

時間片大小的確定:

在輪轉演算法中,時間片的大小對系統效能有很大的影響。 若選擇很小的時間片,將有

利於短作業,因為它能在該時間片內完成。 但時間片小,意味著會頻繁地執行程序排程和

程序上下文的切換,這無疑會增加系統的開銷。 反之,若時間片選擇得太長,且為使每個

程序都能在乙個時間片內完成,rr演算法便退化為fcfs演算法,無法滿足短作業和互動式用

戶的需求。 乙個較為可取的時間片大小是略大於一次典型的互動所需要的時間,使大多數

互動式程序能在乙個時間片內完成,從而可以獲得很小的響應時間。

前面介紹的各種用作程序排程的演算法都有一定的侷限性。如短程序優先的排程演算法,僅照顧了短程序而忽略了長程序,而且如果並未指明程序的長度,則短程序優先和基於程序長度的搶占式排程演算法都將無法使用。而多級反饋佇列排程演算法則不必事先知道各種程序所需的執行時間,而且還可以滿足各種型別程序的需要,因而它是目前被公認的一種較好的程序排程演算法。在採用多級反饋佇列排程演算法的系統中,排程演算法的過程如下所述。

應設定多個就緒佇列,並為各個佇列賦予不同的優先順序。第乙個佇列的優先順序最高,第二個佇列次之,其餘各佇列的優先權逐個降低。該演算法賦予各個佇列中程序執行時間片的大小也各不相同,在優先權愈高的佇列中,為每個程序所規定的執行時間片就愈小。例如,第二個佇列的時間片要比第乙個佇列的時間片長一倍,……,第i+1個佇列的時間片要比第i個佇列的時間片長一倍。

當乙個新程序進入記憶體後,首先將它放入第一佇列的末尾,按fcfs原則排隊等待排程。當輪到該程序執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在乙個時間片結束時尚未完成,排程程式便將該程序轉入第二佇列的末尾,再同樣地按fcfs原則等待排程執行;如果它在第二佇列中執行乙個時間片後仍未完成,再依次將它放入第三佇列,……,如此下去,當乙個長作業(程序)從第一佇列依次降到第n佇列後,在第n 佇列便採取按時間片輪轉的方式執行。

僅當第一佇列空閒時,排程程式才排程第二佇列中的程序執行;僅當第1~(i-1)佇列均空時,才會排程第i佇列中的程序執行。如果處理機正在第i佇列中為某程序服務時,又有新程序進入優先權較高的佇列(第1~(i-1)中的任何乙個佇列),則此時新程序將搶占正在執行程序的處理機,即由排程程式把正在執行的程序放回到第i佇列的末尾,把處理機分配給新到的高優先權程序。

作業系統排程演算法

include include include include using namespace std const int maxnum 101 typedef struct information node struct node1 此結構體用於優先順序演算法的搶占式 int priority i...

作業系統排程演算法

在作業系統中存在多種排程演算法,其中有的排程演算法適用於作業排程,有的排程演算法適用於程序排程,有的排程演算法兩者都適用。下面介紹幾種常用的排程演算法。fcfs排程演算法是一種最簡單的排程演算法,該排程演算法既可以用於作業排程也可以用於程序排程。在作業排程中,演算法每次從後備作業佇列中選擇最先進入該...

作業系統 排程演算法

1 先來先服務排程演算法 fcfs 1 按照作業提交,或程序變為就緒狀態的先後次序分派cpu 2 新作業只有噹噹期那作業或程序執行完成或阻塞才獲得cpu執行 3 被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序讓出cpu 預設非搶占方式 4 有利於cpu繁忙型的作業,而不利於i o繁忙的作業...