03 處理機排程

2021-10-01 18:08:52 字數 2921 閱讀 8521

程序排程

排程演算法評價指標

排程演算法

當有一堆任務要處理,但由於資源有限,這些事務無法同時處理。這就需要確定某種規則來決定處理這些任務的順序,這就是「排程」研究的問題。

在多道程式系統中,程序的數量往往是多於處理機的個數的,這樣不可能同時並行地處理各個程序。處理機排程,就是從就緒佇列中按照一定的演算法選擇乙個程序並將處理機分配給它執行,以實現程序的並發行。

由於記憶體空間有限,有時無法將使用者提交的作業全部放入記憶體,因此就需要確定某種規則來決定將作業調入記憶體的順序。

高階排程(作業排程)。按一定的原則從外存上處於後備佇列的作業中挑選乙個(或多個)作業,給它們分配記憶體等必要資源,並建立相應的程序(建立pcb),以使它們獲得競爭多處理機的權利。

高階排程是外存與記憶體之間的排程。每個作業只調入一次,調出一次。作業調入時會建立相應的pcb,作業調出時才撤銷pcb。高階排程主要指調入的問題,因為只有調入的時機需要作業系統來確定,但調出的時機必然是作業執行結束才調出。

引入了虛擬儲存技術之後,可將暫時不能執行的程序調至外存等待。等它重新具備了執行條件且記憶體又稍有空閒時,再重新調入記憶體。

這麼做的目的是為了提高記憶體利用率和系統吞吐量。

暫時調到外存等待的程序狀態為掛起狀態。值得注意的是,pcb並不會一起調到外存,而是會常駐記憶體。pcb中會記錄程序資料在外存中的存放位置,程序狀態等資訊,作業系統通過記憶體中的pcb來保持對各個程序的監控、管理。被掛起的程序pcb會被放到的掛起佇列中。

中級排程(記憶體排程),就是要決定將哪個處於掛起狀態的程序重新調入記憶體。

乙個程序可能會被多次調出、調入記憶體,因此中級排程發生的頻率要比高階排程更高。

程序的掛起態與七狀態模型

暫時調到外存等待的程序狀態為掛起狀態(掛起態)

掛起態又可以進一步細分為就緒掛起、阻塞掛起兩種狀態

注意「掛起」和「阻塞」的區別,兩種狀態都是暫時不能獲得cpu的服務,但掛起態是將程序映像調到外存去了,而阻塞態下程序映像還在記憶體中。

有的作業系統會把就緒掛起、阻塞掛起分為兩個掛起佇列,甚至會根據阻塞原因不同再把阻塞掛起程序進一步細分為多個佇列。

低階排程(程序排程),其主要任務是按照某種方法和策略從就緒佇列中選取乙個程序, 將處理機分配給它。

程序排程是作業系統中最基本的一種排程,在一般的作業系統中都必須配置程序排程。程序排程的頻率很高,一般幾十毫秒一次。

需要進行程序排程與切換的情況

當前執行的程序主動放棄處理機

程序正常終止;

執行過程中發生異常而終止;

程序主動請求阻塞(如等待 i/o)

當前執行的程序被動放棄處理機

分給程序的時間片用完;

有更緊急的事處理(如 i/o 中斷);

有更高優先順序的程序進入就緒佇列

不能進行程序排程與切換的情況

1、在處理中斷的過程中。中斷處理過程複雜,與硬體密切相關,很難做到在中斷處理過程中程序程序切換。

2、程序在作業系統核心程式臨界區中。

3、在原子操作過程中(原語)。原子操作不可中斷,要一氣呵成(如修改pcb中程序狀態標註,並把pcb放到對應佇列)。

非剝奪排程方式,又稱非搶占方式。即,只允許程序主動放棄處理機。在執行過程中即便有更緊迫的任務到達,當前程序依然會繼續使用處理機,直到該程序終止或主動要求進入阻塞態。

剝奪排程方式,又稱搶占方式。當乙個程序正在處理機上執行時,如果有乙個更重要或更緊迫的程序需要使用處理機,則立即暫停正在執行的程序,將處理機分配給更重要緊迫的那個程序。

「狹義的程序排程」與「程序切換」的區別:

狹義的程序排程指的是從就緒佇列中選中乙個要執行的程序。(這個程序可以是剛剛被暫停執行的程序,也可能是另乙個程序,後一種情況就需要程序切換)

程序切換是指乙個程序讓出處理機,由另乙個程序占用處理機的過程。

廣義的程序排程包含了選擇乙個程序和程序切換兩個步驟。

程序切換的過程主要完成了:

1.對原來執行程序各種資料的儲存

2.對新的程序各種資料的恢復(如:程式計數器、程式狀態字、各種資料暫存器等處理機現場資訊,這些資訊一般儲存在程序控制塊)

指 cpu 「忙碌」 的時間佔總時間的比例。

利用率 = 忙碌的時間 / 總時間

單位時間內完成作業的數量。

系統吞吐量 = 總共完成了多少道作業 / 總共花了多少時間例:某計算機系統處理完 10 道作業,共花費 100 秒,則系統吞吐量為?

10 / 100 = 0.1 道 / 秒。

作業被提交給系統開始,到作業完成為止的這段時間。

周轉時間 = 作業完成時間 - 作業提交時間平均周轉時間 = 各作業周轉時間之和 / 作業數帶權周轉時間 = 作業周轉時間 / 作業時間執行時間= (作業完成時間 - 作業提交時間) / 作業時間執行時間

平均帶權周轉時間 = 各作業帶權周轉時間之和 / 作業數

指程序/作業處於等待處理機狀態時間之和,等待時間越長,使用者滿意度越低。

對於程序來說,等待時間就是指程序建立後等待被服務的時間之和,在等待i/o完成的期間其實程序也是在被服務的,所以不計入等待時間。

對於作業來說,不僅要考慮建立程序後的等待時間,還要加上作業在外存後背佇列中等待的時間。

指從使用者提交請求到首次產生響應所用的時間。

處理機排程算

3 1處理機排程

多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。提高處理機的利用率 改善系統效能,很大程度上取決於處理機排程的效能。2.1高階排程 high level scheduling 又稱作業排程或長程排程 long term scheduling 接納排程 admission sched...

part3 處理機排程

乙個作業從提交開始直到完成,姚經理以下 排程。1.作業排程 高階排程 記憶體與輔存之間的排程,每個作業只調入一次 調出一次。從外存後備作業佇列中挑選乙個或多個作業為其分配必要資源,並建立程序使其有競爭處理機的權利。該排程一般配置在多道批處理中。排程次數較少。2.中級排程 記憶體排程 提高記憶體利用率...

作業系統之 處理機(1)處理機排程

長程排程 作業排程 排程物件是作業,決定作業何時裝入記憶體,為其建立程序 分配資源,放入就緒佇列中。主要用於多批道處理系統 記憶體排程 將暫時無法執行的程序從記憶體調到外存,合適時將外存的就緒程序調入記憶體執行。實際為儲存器管理中的對換功能,見後續.短程排程 程序排程 排程物件是程序,決定就緒佇列中...