記錄型訊號量:
typedef
struct
semaphore;
wait
(semaphore *s)
signal
(semaphore *s)
s->value的初值表示系統中某類資源的數目, 可稱為資源訊號量。
注:利用記錄型訊號量實現前驅關係:
例1:已知a,b的值,表示(a²+3b)/(b+5a)求值過程的前趨圖。
解:
已知a,b,那麼a²,3b,5a程序可以隨時開始:
設 s1=a², s2=3b, s3=5a,
s4=a²+3b, s5=b+5a, s6=(a²+3b)/(b+5a)
設1,2,3,4,5,6號位置分別對應a,b,c,d,e,f,訊號量。
semaphore a,b,c,d,e,f;
a.value=b.value=c.value=c.value=e.value=f.value=0
p1:p2:
p3:p4:
p5:p6:
前驅圖:
例2:快餐廳有4類職員:
(1)服務員:接受顧客點菜;
(2)廚師:準備顧客的飯菜;
(3)打包員:將做好的飯菜打包:
(4)出納員:收款並提交食品。
每個職員可被看作乙個程序,試用一同步機制寫出能讓四類職員正確併發執行的程式。
用訊號量機制實現 程序互斥 同 步 前驅關係
1.分析併發程序的關鍵活動,劃定臨界區 如 對臨界資源印表機的訪問就應放在臨界區 2.設定互斥訊號量 mutex,初值為1 3.在臨界區之前執行p mutex 4.在臨界區之後執行v mutex 注意 對不同的臨界資源需要設定不同的互斥訊號量。p v操作必須成對出現。缺少p mutex 就不能保證臨...
訊號量機制
1 訊號量的型別定義 訊號量 semaphore 的資料結構為乙個值和乙個 指標,指標指向等待該訊號量的下乙個程序。訊號量的值與相應資源的使用情況有關。當它的值大於0時,表示當前可用資源的數量 當它的值小於0時,其絕對值表示等待使用該資源的程序個數。注意,訊號量的值僅能由pv操作來改變。一般來說,訊...
訊號量機制
訊號量機制 整型訊號量 p操作 wait s.value s.value 1 if s.value 0 then block s,l v操作 signal s.value s.value 1 if s.value 0 then wakeup s,l 定義訊號量semaphore代表可用資源實體的數量...