2.2程序的控制
基本過程:
程序的建立
程序的終止
程序的阻塞與喚醒
程序的掛起和啟用
1、程序的建立
1)乙個程序建立另一程序的事件(原因)
使用者登入:分時情況下使用者的請求
作業排程:批處理中
提供服務:執行中的使用者程式提出功能請求,要建立服務程序(如列印服務)
應用請求:應用程式自己建立程序,完成特定功能的新程序。(木馬程式)
2)建立過程
(1) 申請空白pcb
(2) 為新程序分配資源
主要是記憶體資源的處理
(3) 初始化程序控制塊
識別符號(包括父程序的)、程式計數器指向程式入口位址,就緒態、優先順序等資訊的填寫。
(4) 將新程序插入就緒佇列
2.程序的終止
1)引起程序終止的事件
正常結束
異常結束
記憶體越界錯誤
保護錯(許可權錯,如修改唯讀檔案等)
非法指令(不存在的指令,程式異常轉向而把資料當指令)
特權指令錯(使用者態程式試圖執行只有os可執行的指令)
執行超時、運算錯、i/o故障等
外界干預
操作員或作業系統干預(死鎖時,可人為結束)
父程序請求終止子程序
父程序終止,子孫程序也跟著終止
2)終止過程
對上述事件,os呼叫核心終止原語,執行下列過程:
(1) 根據程序標示符,檢索出該程序pcb,讀其狀態。
*if 執行態,立即終止該程序,置排程標誌為真,指示重新進行排程。
*if 有子孫程序,亦應予以終止,以防成為不可控程序。
(2) 歸還全部資源至其父程序或系統。
(3) 將該程序pcb從所在佇列或鍊錶中移出。
3.程序的阻塞與喚醒 1)引起程序阻塞和喚醒的事件
請求系統服務的滿足情況
啟動某種需等待(i/o)操作
合作需要的新資料尚未到達
執行某功能的程序暫時無新工作可做(如傳送資料程序)
2)阻塞和喚醒過程
由程序呼叫阻塞原語阻塞自己,是主動行為:
(1)將pcb中的狀態改為阻塞
(2)該pcb加入到阻塞佇列中
(3)轉程序排程,將處理機分配給另一程序
(4)進行程序切換,即根據兩切換程序的pcb,保護與重新設定處理機狀態。
4.程序的掛起與啟用
2.3 程序同步
1.程序同步的基本概念
1)程序同步的主要任務:
使併發執行的諸程序之間能有效地共享資源和相互合作,從而使程式的執行具有可再現性。
2)臨界資源
一次僅允許乙個程序使用的資源。
互斥:在作業系統中,當乙個程序進入臨界區使用臨界資源時,另乙個程序必須等待,直到占用臨界資源的程序退出臨界區,我們稱程序之間的這種相互制約關係為「互斥」。
同步:多個相互合作的程序,在一些關鍵點上可能需要互相等待或互相交換資訊,這種相互制約關係稱為程序同步關係。可理解為「有序」。
如:生產和消費的「有序」關係靠對counter的正確判斷達到,而對counter的修改必須「互斥」修改。
3)臨界區
每個程序中訪問臨界資源的那段**叫臨界區。
為了正確同步,對臨界區的**要增加控制
4)同步機制應遵循的規則
空閒讓進:資源使用最基本原則
忙則等待:保證互斥
有限等待:合適時被喚醒防止死等
讓權等待:能主動釋放cpu防止忙等
第二章 第二節 注釋
零 怎麼編寫注釋 編寫注釋的方式有三種 1.以 開頭 2.以三個 開頭和結尾 3.以三個 開頭和結尾 定義乙個字串變數 name 張三 定義乙個函式 defgetname return name defsetname n param n 姓名 return name n defsetage age ...
Git學習第二章第二節
你不斷對檔案進行修改,然後不斷提交修改到版本庫里,就好比玩rpg遊戲時,每通過一關就會自動把遊戲狀態存檔,如果某一關沒過去,你還可以選擇讀取前一關的狀態。有些時候,在打boss之前,你會手動存檔,以便萬一打boss失敗了,可以從最近的地方重新開始。git也是一樣,每當你覺得檔案修改到一定程度的時候,...
作業系統第二章第二節
程序控制的基本過程 程序的建立 程序的終止 程序的阻塞與喚醒 程序的掛起和啟用 關於程序的親屬關係 系統中執行的程序並不都是孤立的,有的程序執行後,會呼叫其他程序來執行,這樣就組成了程序間的父子關係。可用 程序圖 描述乙個程序的家族關係,該圖實際就是一種有向樹。程序間的父子關係關係著資源的繼承。建立...