【作業系統】訊號量與P、V操作
知識點:
訊號量機制主要有整形訊號量、記錄性訊號量、訊號量集機制。
訊號量是一個整形變數,根據控制物件的不同賦不同的值。訊號量可分為公用訊號量和私用訊號量兩類。
公用訊號量:實現程序間的互斥,初值=1或資源的數目
私用訊號量:實現程序間的同步,初值=0或某個整數
訊號量S的物理意義:S>=0時表示某資源的可用數,s<0時其絕對值表示阻塞佇列中等待該資源的程序數。P、V操作是實現程序同步與互斥的常用方法。
P操作表示申請一個資源,V操作表示釋放一個資源。
P操作的定義:S=S-1,若S>=0,則執行P操作的程序繼續執行;若S<0,則置該程序為阻塞狀態,並將其插入阻塞佇列。
Procedure P(Var S:Semaphore);
Begin
S:=S-1;
If S<0 then w(S) {執行P操作的程序插入等待佇列}
End;
V操作定義:S=S+1,若S>0則執行V操作的程序繼續執行;若S<0,則從阻塞狀態喚醒一個程序,並將其插入就緒佇列,執行V操作的程序繼續執行。
Procedure V(Var S:Semaphore);
Begin
S:=S+1
If S<=0 then R(s) {從阻塞佇列中喚醒一個程序}
End;
利用PV操作實現程序的互斥
令訊號量mutex的初值為1,當進入臨界區時執行P操作,退出臨界區時執行V操作。這樣利用PV操作實現程序互斥的程式碼段如下:
P(mutex)
臨界區
V(mutex)
討論的習題:
S1初值為2,題目知道有兩個發貨員我們可以知道用S1表示發貨員的數目;同樣S2表示稽核員的數目。當顧客程序i進入系統,此時為第一個我們有S1=2>0則發貨員開始工作P(s1),顧客提完貨物以後發貨員完成自己的 工作釋放資源V(S1);
顧客提完貨以後需要檢察員進行檢測,確認貨物是否正確,S2=1>0,則稽核員開始工作P(s2) ,
進行檢驗 ,無論結果如何S2釋放資源V(s2)。
所以A,C
第二個問題:
當然還有一些知識點需要研究
1。程序間的相互轉換
2。同步於互斥、緩衝池
歡迎關注公眾號: