作業系統知識整理 - 程序控制
主要內容
所謂程序控制,就是系統使用一些具有特定功能的程式段來建立、撤銷程序以及完成程序各狀態間的轉換,從而達到多程序高效率併發執行和協調、實現資源共享的目的。
在作業系統中,這些用於程序控制的程式段被做成原語。原語又分為建立原語、撤銷原語、阻塞原語、喚醒原語、掛起原語和啟用原語等。
建立程序
建立程序有兩種方式:由系統程式模組統一建立;由父程序建立(形成家族關係)。
無論是哪種建立方式,都必須呼叫建立原語來實現。建立原語掃描系統的PCB連結串列(儲存各程序的PCB)
撤銷程序
撤銷程序的情況:
(1)程序已完成所要求的功能而正常終止;
(2)由於某種錯誤導致非正常終止;
(3)父程序(祖先程序)要求撤銷某個子程序。
撤銷原語首先檢查程序連結串列或程序家族是否存在要撤銷的程序,如果有,且該程序沒有子程序,則釋放該程序佔有的所有資源,並釋放PCB結構。
阻塞程序
阻塞原語實現程序從執行狀態到阻塞狀態的轉換。首先儲存當前程序的CPU現場,然後將PCB塊中的程序狀態設定為“阻塞狀態
喚醒程序
喚醒程序有兩種方式:由系統程序喚醒;由事件發生程序喚醒。
喚醒原語實現程序從阻塞狀態到就緒狀態的轉換。首先將被喚醒程序從相應的等待佇列摘下,然後將PCB塊中的程序狀態設定為“就緒狀態”,並送入就緒佇列。
隨後喚醒原語既可以返回原呼叫程式,也可以轉程序排程。
掛起程序
掛起程序的情況:
1)終端使用者的需要:在程式執行期間發現可疑問題後,及時暫停處理。
2)父程序請求:父程序掛起子程序,可以協調各子程序間的活動。
3)調節負荷:當實時系統中的負荷影響到對實時任務的控制時,可由系統把一些不重要的程序掛起,保證系統的正常執行。
4)掛起某些程序,以便檢查資源的使用情況。
掛起的作用:
1. 掛起就緒狀態的程序後,程序變為靜止就緒態,直至被啟用原語作用才能變為活動就緒態;同理,掛起阻塞狀態的程序後,程序變為靜止阻塞態,直至被啟用原語作用才能變為活動阻塞態。
2. 執行狀態的程序被掛起後變為靜止就緒態。
3. 活動阻塞態的程序被喚醒後,只能變為活動就緒態;靜止阻塞態的程序被喚醒後,只能變為靜止就緒態。