在某超市里有一个收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如图3-7所示。为了利用PV操作正确地协调这两类进程之间的工作,设置了三个信号量S1,S2和Sn,且初值分别为0,0和n。这样在图中的a处应填写(1

admin2019-03-11  30

问题 在某超市里有一个收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如图3-7所示。为了利用PV操作正确地协调这两类进程之间的工作,设置了三个信号量S1,S2和Sn,且初值分别为0,0和n。这样在图中的a处应填写(13),在图中的b1,b2处应分别填写(14),在图中的c1、c2处应分别填写(15)。


选项 A、P(S1),V(S2)
B、P(Sn),V(S1)
C、P(S2),V(S1)
D、V(S1),P(S2)

答案A

解析 进程之间存在相互制约的关系,这就是进程的同步和互斥。有多种方法可以解决进程之间的同步和互斥问题,其中常用的一种是信号量方法。设一个整型变量S,同一个队列相对应。在S上定义两种操作:P操作和V操作。执行一次P操作,信号量S减1,S≥0时,调用P操作的进程继续执行;S<0时,该进程被阻塞,并且被插入到等待队列中。执行一次V操作,信号量S加1,当S≥0时,调用V操作的进程继续执行:S≤0时,从信号量S对应的等待队列中选出一个进程进入就绪状态。在本题中,超市是公有资源,所以设置一个互斥信号量Sn,初值为n。当顾客进入超市时,首先要P(Sn),离开时V(Sn)。因为顾客进程和收银员进程之间是同步关系,整个超市只有一个收银员,一次只能有一个顾客付款,所以必须为收银员进程及顾客进程各设置一个私有信号量S1和S2,初值分别为0,0。顾客买完东西,去付款时,执行V(S1),通知收银员有顾客付款。收银员进程此时就可以执行P(S1),进入收费。收费完毕,收银员进程执行V(S2),通知顾客进程。而顾客进程此时继续执行P(S2),即可离开收银台。最后,执行V(Sn),离开超市,释放资源。
转载请注明原文地址:https://kaotiyun.com/show/pvRZ777K
0

最新回复(0)