2.3.2 訊號量機制——作業系統筆記

Yuyakeee發表於2020-11-14


1. 訊號量機制

使用者程式可以通過使用作業系統提供的一對原語來對訊號量進行操作。

訊號量其實就是一個變數(可以是一個整數,也可以是更復雜的記錄型變數),可以用一個訊號量來表示系統中某種資源的數量。
一對原語:wait(S)和signal(S),簡稱為P、V操作。

  • 整型訊號量 在這裡插入圖片描述

  • 記錄型訊號量

    整型訊號量的缺陷是存在“忙等”問題,記錄型訊號量用記錄型資料結構表示的訊號量
    在這裡插入圖片描述

2. 訊號量機制實現程式互斥

  1. 分析併發程式的關鍵活動,劃定臨界區

  2. 設定互斥訊號量mutex,初值為1

  3. 在進入區P(mutex) 申請資源

  4. 在退出區V(mutex) 釋放資源

    	semaphore mutex=1;
    		
    	P1(){
    		...
    		P(mutex);  //使用臨界資源前需要加鎖
    		臨界區程式碼段...
    		V(mutex); //使用臨界資源後需要解鎖
    		...
    	}
    		
    	P2(){
    		...
    		P(mutex);
    		臨界區程式碼段...
    		V(mutex);
    		...
    	}
    

3. 訊號量機制實現程式同步

程式同步:要讓各併發程式按要求有序地推進

  1. 分析在什麼地方需要實現“同步關係”,即必須保證“一前一後”執行的兩個操作
  2. 設定同步訊號量S,初始為0
  3. 在“前操作”之後執行V(S)
  4. 在“後操作”之前執行P(S)
    在這裡插入圖片描述

4. 訊號量機制實現前驅關係

在這裡插入圖片描述

相關文章