应用题 1.设有n个进程共享一个互斥段,如果:(1)每次只允许一个进程进入互斥段;(2)每次最多允许m个进程(m≤n)同时进入互斥段。试问:所采用的信号量初值是否相同?信号量值的变化范围如何?
【正确答案】所采用的互斥信号量初值不同。
(1)互斥信号量初值为1,变化范围为[-n+1,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。
【答案解析】