程序控制是程序管理中的最基本功能,主要包括建立新程序、終止已完成記憶體、將因發生異常情況而無法繼續執行的程序置於阻塞狀態、負責程序執行中的狀態轉換等功能。
①程序的建立
步驟:(1)申請空白pcb
(2)為新程序分配其執行所需的資源
(3)初始化pcb(識別符號(包括父程序的)、程式計數器指向程式入口位址,就緒態、優先順序等資訊的填寫)
(4)將新程序插入就緒佇列
②程序的終止
引起程序終止的事件:(1)正常結束
(2)異常結束(越界、保護錯、非法指令、執行超時、等待超時、i/o故障等)
(3)外界干預
步驟:(1)根據終止程序識別符號讀出程序狀態
1)程序處於執行狀態,立即終止程序,置排程標誌為真,用於指示程序被終止後應重新進行排程
2)若程序有子孫程序,應將子孫程序終止,以防其成為不可控程序
(2)將被終止的所有程序的資源或歸還給其父程序,或歸還給系統
(3)將被終止的程序(pcb)從所在佇列或鍊錶中移出,等待其他程式來搜尋資訊
③程序的阻塞與喚醒
引起阻塞和喚醒的事件:(1)系統服務的滿足情況(向系統請求共享資源失敗)
(2)啟動某種需等待(i/o)操作
(3)合作需要的新資料尚未到達
(4)執行某功能的程序暫時無新工作可做(如傳送資料程序)
阻塞過程:(阻塞是程序自身的主動行為,程序通過呼叫阻塞原語block將自己阻塞)
(1)將pcb中的狀態改為阻塞
(2)該pcb加入到阻塞佇列中
(3)轉程序排程,將處理機分配給另一程序
(4)進行程序切換,即根據兩切換程序的pcb,保護與重新設定處理機狀態。
程序喚醒:(喚醒與阻塞原語相反,阻塞程序等待的事件發生時,有關程序(如放棄該資源的程序)呼叫喚醒原語把等待該事件的程序喚醒)
喚醒過程:(1)把阻塞程序從等待該事件的阻塞佇列中移出
(2)將其pcb中的現行狀態改為就緒
(3)將pcb插入到就緒佇列中
④程序的掛起與啟用
程序掛起:掛起原語將指定程序或阻塞程序掛起,程序只能掛起自己或其子孫程序
(1)檢查被掛起程序的狀態,活動就緒則改為靜止就緒,活動阻塞則改為靜止阻塞
(2)將該pcb複製到記憶體(方便檢查)/外存(對換)指定區域
(3)若掛起的程序是執行態,則需重新進行程序排程
程序啟用:(1)若掛起程序在外存上,將其調入記憶體
(2)檢查程序狀態,若處於靜止就緒,則改為活動就緒,若處於靜止阻塞,則改為活動阻塞
程序控制中,狀態轉換和排程密切相關。
執行態程序的改變必然產生排程行為
只要產生新就緒態程序,就需考慮排程策略
只要是採用搶占式排程,要檢查新就緒程序是否可搶占cpu,引起新的排程
控制併發:
|| 基本控制
|| 程序、pcb、狀態、基本控制過程
|| 合理控制
\/ * 控制程序的相互影響,得到可再現的正確結果 *同步
第二章 作業系統
考試題型分析 選擇題 考試時間 上午試題型別 選擇題分值 6 8分 分值佔比 舉例 包餃子。前驅圖表示出了有些任務是有先後順序的,有些任務是可以並行操作的,箭頭表示約束。首次適應法 最佳適應法 最差適應法 迴圈首次適應法 邏輯位址與實體地址轉換 那麼如何根據邏輯位址求實體地址呢?我們得首先知道那一部...
作業系統 程序控制(二)
程序控制一般是由原語來實現的,原語是由若干指令組成,原語是 原子操作 原子操作在管態下執行,常駐記憶體。管態就是特權態,cpu執行狀態有管態和目態兩種,當cpu處理系統程式的時候,cpu會轉為管態,cpu在管態下可以執行指令系統的全集 包括特權指令與非特權指令 可以這樣理解 當乙個使用者程序在執行過...
作業系統 第二章 3 程序管理
將系統中一次只能被乙個程序使用的資源稱為臨界資源 為了禁止兩個程序同時出現在臨界區,應滿足下列準則 也即 孔融讓梨 的思想 為什麼會出現訊號量機制呢?回顧之前的軟硬體互斥方法,軟體方面上鎖和加鎖操作無法一氣和成,硬體操作不法實現 讓全等待 訊號量機制就是為了更高效的實現程序的同步以及互斥 int s...