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

2021-09-05 13:08:07 字數 1695 閱讀 7148

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

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

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

無論是哪種建立方式,都必須呼叫建立原語來實現。建立原語掃瞄系統的pcb鍊錶(儲存各程序的pcb),在找到一定的pcb表後,填入呼叫者提供的各項引數,最後形成代表程序的pcb結構。引數包括程序名、程序優先順序p0、程序正文段起始位址d0和資源清單r0等。

撤銷程序的情況:

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

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

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

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

阻塞原語實現程序從執行狀態阻塞狀態的轉換。首先儲存當前程序的cpu現場,然後將pcb塊中的程序狀態設定為「阻塞狀態」,再將被阻塞程序放入等待佇列。舊程序(被阻塞程序)處置好後,就要轉程序排程,選擇新程序(就緒程序)投入執行。

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

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

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

掛起程序的情況:

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

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

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

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

掛起的作用:

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

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

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

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

系統中需要有描述程序存在和能夠反映其變化的物理實體,即程序的靜態描述。程序的靜態描述由3部分組成 程序控制塊 process control block,pcb 有關程式段和該程式段操作的資料結構集。pcb是系統感知程序的唯一實體,用於描述程序的當前情況以及管理程序執行的全部資訊,是作業系統中最重要...

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

fork 通過複製呼叫程序建立乙個新的子程序 複製pcb 共享資料獨有 程式計數器 執行的位置都一樣 父程序返回子程序的pid,子程序返回0 寫時複製技術 vfork 建立子程序,共用同乙個虛擬位址空間 共用乙個呼叫棧,會發生呼叫棧混亂 為了防止呼叫棧混亂,因此父程序呼叫vfork會阻塞,阻塞到子程...

作業系統 程序控制

附錄 1.程序的建立 include includemain 2.程序的互斥 1 同步 include includemain else else 2 互斥 include includemain else else 3.程序的軟中斷通訊 include include includevoid wa...