p 操作:
wait(s)
: while s<=
0 do no-op;
s:=s-1
;
v 操作:
整型訊號量符合「有限等待」原則,但不符合「讓權等待」原則
type semaphore=record
value:integer;
l:list of pcb;
end;
p、v 操作: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)
訊號量的基本應用:
互斥訊號量注意點:
控制同步順序的注意點:
swait(s1, s2, …, sn)
if (s1 >=
1and … and sn>=
1 )then
for i:
=1 to n do
si:= si -1;
endfor
else
將程序阻塞在第乙個不能滿足資源訊號量的佇列中。
endif
ssignal(s1, s2, …, sn)
for i:
=1 to n do
si:= si +1;
喚醒所以與si相關的阻塞程序
endfor
訊號量集:
優點:
訊號量題目做題一般方法:
第二章 訊號量機制
2.訊號量機制 1 整型訊號量 1.訊號量定義為乙個整型量 2.根據初始情況賦相應的值 3.僅能通過兩個原子操作來訪問。p操作 wait s while s 0 do no op s s 1 v操作 signal s 2 記錄型訊號量 1.整型訊號量符合 有限等待 原則 signal釋放資源後,當c...
第二章 訊號量
整形訊號量 記錄型訊號量 這些wait 都是 1 signal都是 1 不同的是 整型訊號量wait先判斷小於0然後再 1 signal沒有判斷直接 1 記錄型訊號量wait先 1 再判斷小於0 如果小於0 就從這個小於0的地方鎖上 block 然後signal的時候先 1 然後再從鎖住的地方解鎖。...
訊號量機制
1 訊號量的型別定義 訊號量 semaphore 的資料結構為乙個值和乙個 指標,指標指向等待該訊號量的下乙個程序。訊號量的值與相應資源的使用情況有關。當它的值大於0時,表示當前可用資源的數量 當它的值小於0時,其絕對值表示等待使用該資源的程序個數。注意,訊號量的值僅能由pv操作來改變。一般來說,訊...