1. 程式人生 > >《作業系統》 2018/11/17

《作業系統》 2018/11/17

chapter 2 程序管理

2.1 程序的基本概念

    1. 關於程式執行順序
      1)引入前趨圖
      前趨圖關注的是前趨關係,不能有迴圈
      在這裡插入圖片描述
      2)程式順序執行時的特徵
      (1) 順序性:處理機的操作嚴格按程式規定順序執行
      (2) 封閉性:程式一旦開始執行,其計算結果不受外界因素影響。
      (3) 可再現性:程式執行只要初始條件一樣,不論如何停頓,重複執行多少次結果都一樣。
      3)程式的併發執行分析
      i.要符合前趨關係
      ii.併發不是隨意的
      4)併發程式執行時的特徵
      間斷性(執行表現)
      失去封閉性
      結果不可再現性

在這裡插入圖片描述

    1. 程序
      1)程序的定義:
      程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位。
      **程序其他角度定義:
      i.可併發執行的程式在一個數據集合上的一次執行過程。
      ii.程式的一次執行
      iii.是一個程式與其資料一道通過處理機的執行所發生的活動。

      2)程序的特徵
      i.結構性特徵,程序的根本——PCB
      ii.動態性,程序最基本特徵
      iii.併發性,多個程序實體同存於記憶體中,在一段時間內同時執行。有PCB的程式才能併發。
      iv.獨立性
      v.非同步性

      1. 程序的基本狀態
        i.就緒狀態(Ready)
        ii.執行狀態(Running)
        iii.阻塞狀態(Blocked)
        在這裡插入圖片描述
        在這裡插入圖片描述
    1. 程序控制塊PCB
      i.程序實體:程式碼段+資料段+PCB
      ii.程序控制塊定義:Process Control Block
      存放程序的管理和控制資訊的資料結構稱為程序控制塊。
      • Pcb的重要性
          • 程序控制塊是程序存在的唯一標誌:程序建立時,PCB建立並伴隨程序執行的全過程,直到程序撤消而撤消。PCB就象我們的戶口。
          • 程序管理和控制的最重要的資料結構
            1)程序控制塊中的資訊(pcb內)在這裡插入圖片描述
            i.程序識別符號資訊
            • 每個程序都必須有一個唯一的識別符號
              * 內部標示符:唯一的數字序號,方便系統使用
              * 外部標示符:方便使用者使用,使用者程序訪問某程序時使用
              ii.處理機狀態資訊
              主要由處理機的各種暫存器中的內容組成,被中斷時這些資訊要存放到PCB。
              通用暫存器:使用者程式訪問的,暫存資訊
              指令計數器:下一條指令地址
              程式狀態字PSW:一些狀態資訊
              使用者棧指標:每個使用者程序都有的存放過程和系統呼叫引數及呼叫地址的一組系統棧。
              iii.程序排程資訊
              程序狀態
              程序優先順序
              程序排程所需的其他資訊:排程演算法相關資訊
              事件:狀態轉換有關的事件
              iv.程序控制資訊
              程式和資料的地址(單個程序)
              資料所在的內外存地址
              程序同步和通訊機制(多程序間)
              同步和通訊機制的訊號量、訊息佇列指標等
              資源清單
              連結指標(PCB的組織)
              本PCB所在佇列的下一個程序PCB首地址。
              2)PCB資訊的存放
              系統執行中有若干個程式的PCB,它們常駐記憶體的PCB區。
              採用的資料結構:PCB結構體,PCB連結串列或佇列
              3)PCB的組織方式
            • 連結方式
            • 索引方式
              在這裡插入圖片描述在這裡插入圖片描述

2.2 程序控制

    1. 程序的建立
      • 建立過程
        • (1) 申請空白PCB
        • (2) 為新程序分配資源: 主要是記憶體資源的處理
        • (3) 初始化程序控制塊:識別符號(包括父程序的)、程式計數器指向程式入口地址,就緒態、優先順序等資訊的填寫。
        • (4) 將新程序插入就緒佇列
    1. 程序的終止
      i.引起程序終止的事件
      正常結束
      異常結束
      外界干預
      ii.終止過程
      (1) 根據程序標示符,檢索出該程序PCB,讀其狀態。
      (2) 歸還全部資源至其父程序或系統。
      (3) 將該程序PCB從所在佇列或連結串列中移出。
  1. 程序的阻塞與喚醒
  2. 程序的掛起和啟用

2.3 程序同步

    1. 程序同步的基本概念
      1)程序同步的主要任務: 使併發執行的諸程序之間能有效地共享資源和相互合作,從而使程式的執行具有可再現性。
      2)臨界資源:一次僅允許一個程序使用的資源。
      3)臨界區:每個程序中訪問臨界資源的那段程式碼叫臨界區。為了正確同步,對臨界區的程式碼要增加控制
      * 4)同步機制應遵循的規則
      * 空閒讓進:資源使用最基本原則
      * 忙則等待:保證互斥
      * 有限等待:合適時被喚醒防止死等
      * 讓權等待:能主動釋放CPU防止忙等
      硬體同步機制
      - 關中斷
      - Test-and-Set指令
      - 利用Swap指令實現程序互斥
      1. 訊號量機制
        1) 整型訊號量在這裡插入圖片描述

2)記錄型訊號量
整型訊號量符合“有限等待”原則
訊號量結構資訊發生變化
不僅要有值的處理,還有佇列的處理。
此時形成記錄型資料結構,包括兩部分:
整型變數value(代表資源數目)
程序連結串列L(連結所有等待程序):

  • P、V操作也有所變化

    • 定義訊號量semaphore代表可用資源實體的數量。又叫訊號燈。
      當≥0,代表可供併發程序使用的資源實體數
      當<0,表示正在等待使用該資源的程序數。
      建立一個訊號量必須經過說明,包括
      訊號量所代表的意義
      賦初值
      建立相應的資料結構,以便指向等待使用臨界區的程序。
      除初值外,訊號量的值僅能由標準原子操作P、V操作來改變。
      3)訊號量的基本應用
      實現程序互斥
      實現程序間的前趨關係(有序)

        	* 實現有序
        	前趨關係:
        		併發執行的程序P1和P2中,分別有程式碼C1和C2,要求C1要在C2開始前完成;
        	為每對前趨關係設定一個同步訊號量S12,並賦初值為0。則只有V操作所在程序獲得cpu時能執行
        	控制同步順序的注意點
        	訊號量值為0的點是限制的關鍵所在;
        	成對使用P和V原語(在有先後關係的兩個程序中),不能次序錯誤、重複或遺漏,否則同步順序出錯。
      

3)用訊號量實現司機和售票員的同步。
在這裡插入圖片描述
4)AND型訊號量
出現原因:一些應用往往需要兩個或多個共享資源,而不是前述的一個資源。程序同時要求的共享資源越多,發生死鎖可能性越大。
解決思想:
一次性分配給程序所需資源,用完一起釋放。Wait操作時對它所有需要的資源都要判斷,有AND條件,故稱“AND同步”、“同時wait”。

5)訊號量集
引入原因:每次只能獲得或釋放一個單位的資源,低效;某些時候資源分配有下限的限制;
修改:在大於可分配設定的下界值t前提下,每次可分配d個。