设有n个进程共享一个互斥段,对于如下两种情况使用信号量,信号量的值的变化怎样?
(1) 如果每次只允许一个进程进入互斥段。
(2) 如果每次最多允许m个进程(m
•
1
)互斥信号量初值为
1
,变化范围为[
-n
+
l , 1
]。 当没有进程进入互斥段时,信号量值为
1
;当有
1
个进程进入互斥段但没有进程等待进入互斥段时,信号量值为
0
;当有
1
个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为
-1
;最多可能有
n -1
个进程等待进入互斥段,故此时信号量的值应为
-
(
n - 1
)也就是
-n+1
。
2
)互斥信号量初值为
m
,变化范围为[
-n
+
m , m
]。 当没有进程进入互斥段时,信号量值为
m
;当有
1
个进程进入互斥段但没有进程等待进入互斥段时,信号量值为
m - 1
:当有
m
个进程进入互斥段且没有一个进程等待进入互斥段时,信号量值为
0
:当有
m
个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为
- 1
;最多可能有
n - m
个进程等待进入互斥段,故此时信号量的值应为
-(n-m)
也就是
-n+m.