1. 程式人生 > >作業系統知識整理 - 程序控制

作業系統知識整理 - 程序控制

主要內容


 

所謂程序控制,就是系統使用一些具有特定功能的程式段來建立撤銷程序以及完成程序各狀態間的轉換,從而達到多程序高效率併發執行和協調、實現資源共享的目的。

在作業系統中,這些用於程序控制的程式段被做成原語原語又分為建立原語撤銷原語阻塞原語喚醒原語掛起原語啟用原語等。

 

建立程序

建立程序有兩種方式:由系統程式模組統一建立;由父程序建立(形成家族關係)。

無論是哪種建立方式,都必須呼叫建立原語來實現。建立原語掃描系統的PCB連結串列(儲存各程序的PCB)

,在找到一定的PCB表後,填入呼叫者提供的各項引數,最後形成代表程序的PCB結構。引數包括程序名程序優先順序P0程序正文段起始地址d0資源清單R0等。

 

撤銷程序

撤銷程序的情況:

(1)程序已完成所要求的功能而正常終止;

(2)由於某種錯誤導致非正常終止;

(3)父程序(祖先程序)要求撤銷某個子程序。

撤銷原語首先檢查程序連結串列或程序家族是否存在要撤銷的程序,如果有,且該程序沒有子程序,則釋放該程序佔有的所有資源,並釋放PCB結構。

 

阻塞程序

阻塞原語實現程序從執行狀態阻塞狀態的轉換。首先儲存當前程序的CPU現場,然後將PCB塊中的程序狀態設定為“阻塞狀態

”,再將被阻塞程序放入等待佇列。舊程序(被阻塞程序)處置好後,就要轉程序排程,選擇新程序(就緒程序)投入執行。

 

喚醒程序

喚醒程序有兩種方式:由系統程序喚醒;由事件發生程序喚醒。

喚醒原語實現程序從阻塞狀態就緒狀態的轉換。首先將被喚醒程序從相應的等待佇列摘下,然後將PCB塊中的程序狀態設定為“就緒狀態”,並送入就緒佇列。

隨後喚醒原語既可以返回原呼叫程式,也可以轉程序排程

 

掛起程序

掛起程序的情況:

1)終端使用者的需要:在程式執行期間發現可疑問題後,及時暫停處理。

2)父程序請求:父程序掛起子程序,可以協調各子程序間的活動。

3)調節負荷:當實時系統中的負荷影響到對實時任務的控制時,可由系統把一些不重要的程序掛起,保證系統的正常執行。

4)掛起某些程序,以便檢查資源的使用情況。

 

掛起的作用:

1. 掛起就緒狀態的程序後,程序變為靜止就緒態,直至被啟用原語作用才能變為活動就緒態;同理,掛起阻塞狀態的程序後,程序變為靜止阻塞態,直至被啟用原語作用才能變為活動阻塞態

2. 執行狀態的程序被掛起後變為靜止就緒態

3. 活動阻塞態的程序被喚醒後,只能變為活動就緒態靜止阻塞態的程序被喚醒後,只能變為靜止就緒態