作業系統排程演算法(詳解)

2021-09-16 22:23:19 字數 2696 閱讀 7733

長程排程:決定加入到待執行的程序池當中中程排程:決定加入到哪一部分或全部在主存中程序的集合中短程排程:決定哪乙個可用程序將被處理器執行i/o排程:決定哪乙個程序掛起的i/o請求將被可用的i/o裝置處理

w:花費等待的時間

e:到現在為止執行所用的時間

s:程序所需要的總的服務時間

搶占:當前執行的程序可能被作業系統中斷,並轉移到就緒態。關於搶占的策略可能是在乙個新程序到達時,或者在乙個中斷發生後把乙個被阻塞的程序置於就緒態時,或者基於週期性的中斷。

非搶占:在這種情況下,一旦程序處於執行態,他就不斷執行直到終止,或者在為等待i/o或者請求某些系統服務而阻塞自己

最簡單的策略時先來先服務或者嚴格排隊方案。當每乙個程序就緒後,它就加入就緒佇列。當當前正在執行的程式終止時,選擇在就緒佇列中等待時間最長的程序執行。

fcfs首席執行官程序比執行段程序更好,例如

fcfs的難點:

為了減少在fcfs中段作業不利的情況下,一種簡單的辦法就是採用基於時鐘的搶占策略,最簡單的就是輪轉法。以乙個週期性間隔產生中斷,當中斷發生的時,當前正在執行的程式被置於就緒佇列當中,然後在基於fcfs策略選擇下乙個就緒作業執行。這種技術也稱為時間片

優點:在處理分時系統和事務處理系統中都特別有效

缺點:受處理限制的程序和受i/o限制的程序的相對程序,通常,受i/o限制的程序要比受處理器限制的程序在使用處理器的時間上短。

因此,受處理器受限制的程序通常傾向於不公平的使用大部分處理時間,從而導致i/o限制的程序效能降低,使i/o裝置低效,相應時間的變化大。

新程序到達並加入就緒佇列,是基於fcfs管理的。當乙個為i/o而被阻塞時,他加入到乙個i/o佇列,它的新特點是阻塞的i/o程序被轉移到乙個fcfs輔助佇列當中。當進行一次排程決策時,輔助佇列中的程序優先於就緒佇列中的程序。

減少fcfs固有的對長程序的偏向的另一種方法是最短程序優先。這是非搶占策略,其原則就是下一次選擇所需要處理時間最短的程序,因此短程序會越過長作業,跳到佇列頭。

spn的難點在與需要知道或至少要估計每乙個程序所需要處理的時間。對於批處理作業,系統要求程式設計師估計該值,並提供給作業系統。

缺點:spn的風險在於只要持續不斷地提供更短的程序,長程序就有可能餓死。另一方面,儘管spn增加了對長作業的偏向,但由於缺少搶占機制,它對分時系統或事務處理系統人仍然不理想

相對於spn增加了搶占機制。

使用歸一化周轉時間,他是周轉時間與實際服務時間之間的比率,可作為質量因子

r:相應比

w:等待處理器的時間

s:期待的服務時間

因此排程規則如下:在當前程序完成或被阻塞時,選擇r值最大的就緒程序。該方法非常具有吸引力,因為它說明了程序的年齡。當偏向短作業時(因為小分母產生大比值),長程序由於得不到服務的時間不斷地增加,從而增大了比值,最終在競爭中戰勝了短程序。

和srt和srn一樣,使用最高相應比策略需要估計期待服務時間

如果沒有關於各個程序的相對長度的任何資訊,則snr srt hnnr都不能使用。

方法如下。排程基於搶占原則並且使用動態優先機制。當乙個程序第一次進入系統時,他被放置在rq0。當它第一次被搶占後並返回就緒狀態時,他被放置在rq1。在隨後的時間裡,每當他被搶占時,他被降級到下乙個低優先順序佇列當中。

缺點:如果頻繁的有新作業進入系統,也有可能出現餓死的情況。為了補償這一點可以按照佇列改變搶占次數,rq0中排程的程序允許執行乙個時間單位,rq1執行執行2個時間單位,即使較低的優先順序分配較長的時間,長程序仍然可能餓死。唯一補救的方法就是當乙個程序在它當前的佇列中等待服務的時間超過一定的時間量之後,把它提公升到乙個優先順序較高的佇列當中。

到目前為止我們是將所有的排程演算法都時把就緒的程序的集合看作單一的程序池,從該程序池當中選擇乙個要執行的程序。程序池也按優先順序劃分成幾個,但它們都是同構的,可以保證不影響其他程序組。

優先順序:

普通優先順序:100~139

實時優先順序:0~99

活動佇列:

從0開始遍歷queue[140]

找到第乙個非空佇列該佇列必定為優先順序最高的佇列

拿到佇列中的第乙個程序,開始執行,排程完成

遍歷queue[140]時間複雜度為常數,但還是太低效     

過期佇列:

active指標和expired指標

作業系統排程演算法

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

作業系統排程演算法

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

作業系統 排程演算法

fcfs是最簡單的排程演算法,既可以用於作業排程,也可以用於程序排程,系統將按照作業到達的先後次序來進行排程。sjf演算法是以作業的長短來計算優先順序,作業越短,優先順序越高。作業的長短是以作業所要求的執行時間來衡量的。可以分別用於作業排程和程序排程。缺點 必須預知作業的執行時間 對長作業很不利,長...