OS之程序排程

2021-07-06 11:17:21 字數 2643 閱讀 2245

處理機排程

在多道程式程式的環境中,記憶體中存在著多個程序,程序往往大於處理機數目,這就要系統按照某種演算法,動態的將處理機分配給處於就緒狀態的程序。是之執行,分配處理機的任務就是由處理機排程完成的。排程實質上是一種資源分配。

處理機排程演算法的目標:

處理價排程演算法的共同目標:

1:資源利用率,為了提高資源的利用率,應是系統中的處理機和其他資源盡可能保持忙碌狀態。

2:公平性:是所有的程序都合理的使用程序,不會發生程序飢餓現象

3:平衡性:為使系統中的cpu和各種外部裝置能經常處於忙碌狀態,排程演算法盡可能保持系統資源的平衡使用

4:策略強制執行:對所制定的策略包括安全策略,只要需要執行,就必須予準確的執行,即使造成某些工作延遲也呀執行。

程序排程演算法:

先來先服務(fcfs)

當採用該演算法的時候,系統將按照作業先後次序來進行排程,每次排程是從就緒的程序佇列選擇乙個優先進入該佇列的程序,為其分配處理機,讓其處於執行狀態,該程序一種執行到完成或發生某件事件而阻塞後,程序排程程式才將處理機(非搶占式)分配給其他程序。在作業或程序喚醒後並不立即恢復執行,通常等到當前作業或程序讓出cpu ,是最簡單的演算法。

特點:有利於長作業,不利於段作業,有利於cpu繁忙作業,不利於i/o繁忙的作業。

fcfs 在處理機上很少作為主排程演算法,但經常把它與其他排程演算法結合使用,形成更為有效的演算法。

短作業優先(sjf)

實際情況中,段作業占有的時間比例大,為了能使它們能夠比長作業優先執行,而產生了短作業優先的排程演算法。

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

缺點:1:必須預知段作業的時間(很難準確估計)

2:對創作也非常不利,長作業的周轉時間會明顯加長,該演算法忽視作業的等待時間,可能出現飢餓等待。

3:人機互動無法進行

4:沒有完全考慮作業的緊迫程度,不能保證緊迫作業及時處理。

優先順序排程演算法和高響應比排程演算法

1:優先順序排程演算法(

psa)

作業的優先順序對於(fcfs

)演算法作業的等待的時間就是作業的優先順序,等待的時間越長優先順序越大,而對於(

sjf)演算法,作業的長短就是作業的優先順序,作業所需的時間越短,則優先順序越高。但是上面兩種演算法偶不能保證緊迫作業優先執行,而在優先順序排程演算法中則是由外部賦予作業相應的優先順序,優先順序排程演算法是根據該優先順序進行排程的,這樣就可以保證緊迫性的作業優先進行。

2:高響應排程演算法:

為每乙個作業引入乙個動態優先順序,即優先順序是可以改變的,令其隨等待時間的延長而增加,這將使長作業的優先順序隨在等待期間不斷增加優先順序,等待足夠時間就可以獲得處理機優先順序規律如下:

優先權= 

(等待時間

+要求服務時間)

/要求服務時間。

當然在利用該演算法時,每次都要進行響應比計算,顯然會增加系統開銷。

程序排程:

程序排程的任務:

1:儲存處理機的現場資訊,

2:按照某種演算法來選取程序,排程程式按照某種演算法從就緒佇列中選取乙個程序,將其狀態改為執行狀態,並準備把處理機分配給它

3:把處理器分配給程序 

程序排程機制:

為了實現程序的排程,在程序的排程機制中應具有以下三個基本部分:

排隊器:

為了提高程序排程的效率,應事先將系統中的所有就緒程序按照一定的策略排成乙個或多個佇列,以便排程程式快=

快速找到,以後每當乙個程序轉變狀態的時候,排隊器便將其插入到相應的就緒佇列中。

分派器:

分配器依據程序排程程式所選定的程序,將其從就緒佇列中取出,然後進行從分派器到新選出程序間的上下文轉換,將處理機分配給新選出的程序。

上下文切換器:

在處理器進行上下文切換時,會發生兩對上下文切換,1

:第一次上下文切換時,

os將儲存當前程序的上下文,即把當前程序的處理機暫存器內容儲存到該程序的程序控制塊的相應單元,

2:第二對上下文切換就是移出分派程式的上下文,再把新選程序的

cpu現場資訊裝入到處理機的各個相對應的暫存器中。

程序排程方式:

非搶占式:

該方式一旦把處理機分配給程序後,就一直讓它執行下去,絕不會因為時鐘中斷或任何去她原因去搶占當前正執行程序的處理機。直到該 程序完成或阻塞後才讓出處理機。

非搶占式中引起排程的因素:

1:正在執行的程序結束,或因為某種因素而無法繼續。

2:正在執行的程序,因提出

i/o請求而暫停執行,。

3:程序同步過程中執行了某種原語操作。

特點:實現簡單,系統開銷小,使用於大多數批處理系統,單不適用於分時系統和實時系統。

搶占方式:

這種排程方式允許排程程式根據某種原則,去暫停正在執行的程式,將已經分配給該程序的處理機重新分配給另乙個程序,在現代os 

中廣泛採用搶占方式這時由於對於批處理機系統,可以防止乙個長程序長時間占用處理機 ,確保處理機公平的為每個程序服務。在實時系統中,採用只有採用搶占式才有可能實現人機互動,在實際中搶占式能滿足實時任務的需求,但搶占方式比較複雜:

搶占不是任意的,必須遵一定的原則:

1:優先權原則

2:短程序優先原則:指允許新的短程序搶占當前常程序的處理機。

3:時間片原則:各程序按時間片輪轉執行時,但正在執行的程序的乙個時間片用完後,便停止該程序的執行,而重新進行排程。

OS之程序排程(二)

時間片輪轉演算法 在分時系統中,最簡單最常用的是基於時間片的輪轉排程演算法,讓就緒佇列上的每個程序僅執行乙個時間片。輪 的基本原理 在就緒佇列中,系統可設定每隔一定時間便產生乙個中斷,去啟用程序排程程式進行排程,把cpu 分配給隊首程序,並令其執行乙個時間片,當其執行完畢後,又把處理機分配給佇列的新...

OS 程序排程演算法

最近學習自考學到程序排程,其中的排程演算法看著很複雜,細想又很簡單,接下來簡單介紹一下 先來先服務演算法 理論定義 我的理解 排程演算法 從就緒佇列的隊首選擇最先到達就緒佇列的程序,為該程序分配cpu 排隊,先到先得 效能分析 適合長程序,不利於短程序,短程序等待時間相對於執行時間而言太長 排隊要做...

OS學習之排程與死鎖

排程與死鎖 衡量作業排程的測度 1 作業平均周轉時間 t和加權平均周轉時間w。t 其中ti fi ai,即作業結束時間減去作業到達時間,n為作業數 w 其中wi ti ri,r 為事件執行時間 2 作業或程序的平均等待時間,即各個作業或程序進入可以排程的狀態 作業為收容狀態,程序為就緒狀態 到開始選...