作業系統 第2章 程序管理 2 2 2 3

2021-08-28 11:31:06 字數 2431 閱讀 6717

**

一、程序控制的基本過程:

1、1)程序的建立(乙個程序建立另一程序的事件(原因))

使用者登入:分時情況下使用者的請求

作業排程:批處理中

提供服務:執行中的使用者程式提出功能請求,要建立服務程序(如列印服務)

應用請求:應用程式自己建立程序,完成特定功能的新程序。(木馬程式)

2)建立過程

(1) 申請空白pcb

(2) 為新程序分配資源

主要是記憶體資源的處理

(3) 初始化程序控制塊

識別符號(包括父程序的)、程式計數器指向程式入口位址,就緒態、優先順序等資訊的填寫。

(4) 將新程序插入就緒佇列

2、程序的終止(引起程序終止的事件)

正常結束、異常結束、外界干預

2)終止過程

對上述事件,os呼叫核心終止原語,執行下列過程:

(1) 根據程序標示符,檢索出該程序pcb,讀其狀態。

*if 執行態,立即終止該程序,置排程標誌為真,指示重新進行排程。

*if 有子孫程序,亦應予以終止,以防成為不可控程序。

(2) 歸還全部資源至其父程序或系統。

(3) 將該程序pcb從所在佇列或鍊錶中移出

3、程序的阻塞與喚醒

1)引起程序阻塞和喚醒的事件

請求系統服務的滿足情況

啟動某種需等待(i/o)操作

合作需要的新資料尚未到達

執行某功能的程序暫時無新工作可做(如傳送資料程序)

2)阻塞和喚醒過程

由程序呼叫阻塞原語阻塞自己,是主動行為:

(1)將pcb中的狀態改為阻塞

(2)該pcb加入到阻塞佇列中

(3)轉程序排程,將處理機分配給另一程序

(4)進行程序切換,即根據兩切換程序的pcb,保護與重新設定處理機狀態。

阻塞與喚醒原語作用相反,成對使用

阻塞程序等待的事件發生時,有關程序(如放棄該資源的程序)呼叫喚醒原語把等待該事件的程序喚醒。

(1)把阻塞程序從等待該事件的阻塞佇列中移出

(2)將其pcb中的現行狀態改為就緒

(3)將pcb插入到就緒佇列中。

4、程序的掛起和啟用(注意:程序只能掛起自己或其子孫程序。

掛起原語將指定程序或阻塞程序掛起。

(1)檢查被掛起程序的狀態,活動就緒則改為靜止就緒,活動阻塞則改為靜止阻塞

(2)將該pcb複製到記憶體(方便檢查)/外存(對換)指定區域

(3)*若掛起的程序是執行態,則需重新進行程序排程。

啟用原語的執行過程

若掛起程序在外存上,將其調入記憶體

檢查程序狀態,若處於靜止就緒,則改為活動就緒,若處於靜止阻塞,則改為活動阻塞

2、關於程序的親屬關係

系統中執行的程序並不都是孤立的,有的程序執行後,會呼叫其他程序來執行,這樣就組成了程序間的父子關係。

2.3程序同步

1.程序同步的基本概念

1)程序同步的主要任務:

使併發執行的諸程序之間能有效地共享資源和相互合作,從而使程式的執行具有可再現性。

2)臨界資源

一次僅允許乙個程序使用的資源。

理解同步

互斥:在作業系統中,當乙個程序進入臨界區使用臨界資源時,另乙個程序必須等待,直到占用臨界資源的程序退出臨界區,我們稱程序之間的這種相互制約關係為「互斥」。

同步:多個相互合作的程序,在一些關鍵點上可能需要互相等待或互相交換資訊,這種相互制約關係稱為程序同步關係。可理解為「有序」。

3)臨界區

每個程序中訪問臨界資源的那段**叫臨界區。

為了正確同步,對臨界區的**要增加控制

4)同步機制應遵循的規則

實現互斥的方法應符合如下每條原則

空閒讓進:資源使用最基本原則

忙則等待:保證互斥

有限等待:合適時被喚醒防止死等

讓權等待:能主動釋放cpu防止忙等

一種方法實現互斥

repeat flag[i]=true; turn=j; while (flag[j] and turn=j) do no-op; 操作r的** flag[i]=false; …(其他操作) until false

同步控制的關鍵

主要涉及」判斷」和」修改標誌」操作

不應被打斷(原語,os核心態執行)

如何制定一種寫法,使標誌的使用適用於各種具體應用情況?

重點作業系統通過pcb進行程序建立、終止、阻塞的過程如何;

如何理解程序同步的含義;

控制同步的關鍵在**。

第2章 程序管理

要點 分析程式執行順序 以及併發的特徵 程序的概念 特徵與狀態 程序控制塊及其組織 關於程式執行順序 1 引入前趨圖 描述程序執行前後關係的圖 有向無迴圈圖 dag 2 程式順序執行時的特徵 1 順序性 處理機的操作嚴格按程式規定順序執行 2 封閉性 程式一旦開始執行,其計算結果不受外界因素影響。3...

《作業系統導論》第7章 程序排程

可能的排程策略之前,我們先做一些簡化假設。這些假設與系統中執行的程序有關,有時候統稱為工作負載 workload 確定工作負載是構建排程策略的關鍵部分。這裡做的工作負載假設是不切實際的,但我們會逐漸放寬這些假定,並最終開發出乙個完全可操作的排程準則。我們對作業系統中執行的程序 有時也叫工作任務 做出...

作業系統 第2章 程序同步 經典程序同步問題

1.生產者 消費者問題 無論生產者 消費者使用緩衝池時應保證互斥使用 互斥訊號量mutex 生產者和消費者間交叉有序 有序的控制最根源在產品數量上。設定兩個訊號量 分別針對生產者 消費者設定不同的訊號量,empty和full分別表示緩衝池中空緩衝池和滿緩衝池 即產品 的數量。變數和訊號量 buffe...