作業系統基礎 程序管理(二)處理機排程

2021-10-07 21:09:48 字數 3252 閱讀 2638

當有一堆任務要處理,但由於資源有限而無法同時處理。這是需要確定以某種規則來決定處理這些任務的順序,這就是「排程」所研究的問題。排程可以分為三個層次,分別是高階排程(作業排程),中級排程(記憶體排程)以及低階排程(程序排程)。其中:高階排程是外存與記憶體之間的排程,每個作業只調入一次、調出一次,作業調入與調出時建立或者撤消相應的 pcb。中級排程則是決定將哪個處於掛起狀態的程序重新調入記憶體。而低階排程的主要任務是按照某種方法和策略從就緒佇列中選取乙個程序,將處理機分配給它。

排程類別

要做什麼

排程發生時刻

發生頻率

對程序狀態的影響

高階排程(作業排程)

按照某種規則,從後備佇列中選擇合適的作業將其調入記憶體,並為其建立程序

外存→記憶體(面向作業)

最低無→建立態→就緒態

中級排程(記憶體排程)

按照某種規則,從掛起佇列中選擇合適的程序將其資料調回記憶體

外存→記憶體(面向程序)

中等掛起態→就緒態(阻塞掛起→阻塞態)

低階排程(程序排程)

按照某種規則,從就緒佇列中選擇乙個程序為其分配處理機

記憶體→cpu

最高就緒態→執行態

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

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

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

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

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

在原子操作過程中(原語)。原子操作不可中斷,要一氣呵成(如之前提到的修改 pcb 中程序狀態標誌,並把 pcb 放到相應佇列)

2.1 非剝奪排程方式

非剝奪排程方式,又稱非搶占方式。即,只允許程序主動發起處理器。在執行過程中即便有更緊迫的任務到達,當前程序依然會繼續使用處理機,知道該程序終止或主動要求進入阻塞態。其實現很簡單,系統開銷小但是無法及時處理緊急任務,適合於早期的批處理系統。

2.2 剝奪排程方式

剝奪排程方式,又稱搶占方式。當乙個程序正在處理機上執行時,如果有乙個更重要或更緊迫的程序需要使用處理機,則立即暫停正在執行的程序,將處理機分配給更重要更緊迫的那個程序。這種方式可以優先處理更緊急的程序,也可實現讓各程序按時間片輪流執行的功能(通過時鐘中斷)。適合於分時作業系統、實時作業系統。

「狹義的程序排程」與「程序切換」的區別:狹義的程序排程指的是從就緒佇列中選中乙個要執行的程序。(這個程序可以是剛剛被暫停執行的程序,也可以是另乙個程序,後一種情況就需要程序切換);程序切換是指乙個程序讓出處理機,由另乙個程序占用處理機的過程;廣義的程序排程包含了選擇乙個程序和程序切換兩個步驟。

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

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

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

注意:程序切換是有代價的,因此如果過於頻繁地進行程序排程、切換,必然會使整個系統的效率降低,使系統大部分時間都花在了程序的切換上,而真正用於執行程序的時間減少。

不同環境的排程演算法不同,因此需要針對不同環境來討論排程演算法。

2.1 先來先服務 first-come first-serviced(fcfs)

非搶占式的排程演算法,按照請求的順序進行排程。該演算法即用於程序排程,有用於作業排程。該演算法不會導致飢餓(飢餓即某程序/作業長期得不到服務)。有利於長作業,但不利於短作業,因為短作業必須等待前面的長作業執行完畢後才能執行,而長作業又需要執行很長的時間,造成了短作業等待時間過長。

2.2 短作業優先 shortest job first(sjf)

非搶占式的排程演算法,按估計執行時間最短的順序進行排程。即可用於作業排程,也可用於程序排程(spf)。長作業有可能會餓死,處於一直等待作業短作業執行完畢的狀態。因為如果一直有短作業到來,那麼長作業永遠得不到排程。

2.3 最短剩餘時間優先 shortest remaining time next(srtn)

最段作業優先的搶占式版本,按剩餘執行時間的順序進行排程。當乙個新的作業到達時,其整個執行時間與當前程序的剩餘時間作比較。如果新的程序需要的時間最少,則掛起當前程序,執行新的程序。否則新的程序等待。

2.4 高響應比優先 highest response ratio next(hrrn)

非搶占式演算法,在每次排程時先計算各個作業/程序的響應比,選擇響應比最高的作業/程序為其服務:

響 應比

=等待時

間+要求

服務時間

要求服務

時間≥1

響應比=\frac \geq 1

響應比=要求

服務時間

等待時間

+要求服

務時間​

≥1綜合考慮了等待時間和執行時間(要求服務時間)。等待時間相同時,要求服務的時間短的優先(sjf的優點);要求服務時間相同時,等待時間長的優先(fcfs的優點)。對於長作業來說,隨著等待時間越來越久,其響應比也會越來越大,從而避免了長作業飢餓的問題。

互動式系統有大量的使用者交操作,在該系統中排程演算法的目標是快速地進行響應。

3.1 時間片輪轉排程演算法(rr)

將所有就緒程序按fcfs的原則排成乙個佇列,每次排程時,把 cpu 時間分配給隊首程序,該程序可以執行乙個時間片。當時間片用完時,由計時器發出時鐘中斷,排程程式便停止該程序的執行,並將它送往就緒佇列的末尾,同時繼續把 cpu 時間分配給隊首的程序。

時間片輪轉演算法的效率和時間片的大小有很大關係:

3.2 優先順序排程演算法

為每個程序分配乙個優先順序,按優先順序進行排程。為了防止低優先順序的程序永遠等不到排程,可以隨著時間的推移增加等待程序的優先順序。

3.3 多級反饋排程演算法

乙個程序需要執行 100 個時間片,如果採用時間片輪轉排程演算法,那麼需要交換 100 次。

多級佇列是為這種需要連續執行多個時間片的程序考慮,它設定了多個佇列,每個佇列時間片大小都不同,例如 1,2,4,8,…。程序在第乙個佇列沒執行完,就會被移到下乙個佇列。這種方式下,之前的程序只需要交換 7 次。每個佇列優先權也不同,最上面的優先權最高。因此只有上乙個佇列沒有程序在排隊,才能排程當前佇列上的程序。可以將這種排程演算法看成是時間片輪轉排程演算法和優先順序排程演算法的結合。

作業系統02 處理機管理

處理機排程是系統對處理機資源進行分配,使處於就緒狀態的程序得以執行。使用的處理機排程演算法決定了大型系統執行時的效能。1.處理機排程層次 乙個作業從提交到獲得處理機執行,直至作業執行完畢,可能需要經過多級處理機排程。處理機排程的層次分三層 2.作業與作業排程 3.程序排程 4.實時排程 優先順序倒置...

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

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

作業系統階段測試一(處理機管理)

一 單項選擇題 1 以下對程序的描述中,錯誤的是 d a 程序是動態的概念 b 程序執行需要處理機 c 程序是有生命期的 d 程序是指令的集合 2 併發程序指的是 c a 可並行執行的程序 b 可同一時刻執行的程序 c 可同時執行的程序 d 不可中斷的程序 3 分配到必要的資源並獲得處理機時間的程序...