1. 程式人生 > >三、處理機管理(二)--程序的排程與管理

三、處理機管理(二)--程序的排程與管理

  • 程序的排程與管理


  • 程序控制塊佇列(PCB),作業系統採用連結串列的方法將這些程序的PCB連結起來生成佇列。

對於單CPU系統,生成的PCB佇列如下。

(1)執行佇列。任何時刻系統中最多隻有一個程序處於執行狀態。

(2)就緒佇列。就緒佇列中的PCB會根據某種原則進行排序,程序入隊與出隊的順序與排程演算法有關。

(3)阻塞佇列。所有處於阻塞狀態的PCB,根據阻塞的原因不同分別排隊。可以有多個程序的PCB,也可以為空。


  • 程序的排程

又稱為低階排程。主要任務是確定什麼時候進行排程(排程時機)、怎樣排程(排程演算法)、按什麼原則進行排程(排程過程具體做些什麼)。

使用者把一個任務提交給計算機作業系統後,一般要經過一個三級排程的過程才能完成整個任務:高階排程、中級排程、低階排程。所有的作業系統都具有低階排程。

 

程序排程和程序切換是作業系統的核心程式。

我們把一個程序讓出CPU,另一個程序佔用CPU的過程叫做“程序切換”、“上下文切換”、“CPU場景切換”。

在單CPU作業系統中,某個程序正在處理機上執行時,另一個更為重要的程序需要優先處理。系統一般具有以下兩種處理方式:

搶佔式:優先順序高的程序可以強行搶佔CPU,特點:較高靈活性,緊急任務到達後可以搶佔處理機立即進行處理,但是演算法複雜。

非搶佔式:不允許強行剝奪已經分配給正在執行程序的處理機。特點:簡單,系統開銷小,緊急任務到達後不能立即進行處理,實時性差。

 

在設計程序排程演算法時一般要考慮:公平性、高效性、響應時間、週轉時間、加權週轉時間、吞吐量

常用的程序排程演算法:

(1)先來先服務排程演算法:以到達就緒佇列的先後次序為標準來選擇佔用處理機的程序。到達程序的PCB總是排在就緒佇列末尾,排程程式總是把CPU分配給就緒佇列中第一個程序使用。

(2)時間片輪轉排程演算法:為就緒佇列中的每一個程序分配一個稱為“時間片”的時間段,他是允許一個程序連續執行的最大時間長度。經常用在分時作業系統中,時間片值應略大於大多數分時使用者的詢問時間。

(3)優先順序排程演算法:為系統中的每個程序規定一個優先順序,就緒佇列中具有最高優先順序的程序有優先獲得處理機的權利;如果幾個程序的優先順序相同,則採用先來先服務的方法排程。

可以從以下幾方面考慮程序的優先順序:根據程序的型別(系統程序>使用者程序)、根據程序執行任務的重要性、根據程序程式的性質、根據對資源的要求、根據使用者的請求。

(4)多級佇列排程演算法:它是時間片排程演算法與優先順序排程演算法的結合。

 

程序排程程式應該具有以下的功能:

(1)記錄系統中所有程序的有關情況

(2)確定分配處理機的演算法

(3)完成處理機的分配

(4)完成處理機的回收


  • 程序的管理

一旦啟動程式,就要保證做完,中間不能插入其他程式的執行序列。在作業系統中,把具有這種特性的程式稱為“原語”。

為了保證原語操作的不可分割性,通常總是利用遮蔽中斷的方法。

原語的功能:

(1)建立程序原語

(2)撤銷程序原語:收回該程序佔用的資源

(3)阻塞程序原語

(4)喚醒程序原語

 



《作業系統實用教程》