利用訊號量機制實現前驅關係

2021-09-16 19:22:47 字數 982 閱讀 9378

記錄型訊號量:

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代表可用資源實體的數量...