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

admin2009-02-15  23

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


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

答案A

解析 S1是收银员进程的私用信号量;32是顾客进程的私用信号量。由题意可知:
   每当有一个顾客进入时,允许进入的人数就是—1,所以应该是对信号量Sn的P操作,选C,即P(Sn)。
   很明显,付款进程和收银员进程是一个多消费者和一个生产者的问题。开始前应该判断收银员进程是否忙。忙则挂起等待,不忙则付款。
   收银员进程判断是否有人来付款,有人则让其他进程等待,没人则自己挂起等待。收银完毕,则自己允许其他进程调用。
   因为Sn初值为n,而收银员只有一个同时也只能处理一个付款者。可以排除所有(17)、(18)中的P(Sn)的选项。
   c a
   c c
   //不成立,因为S1和S2信号量没有P,V成对,即只有消费或者生产
   c d
   //不成立,理由同上
   d a
   d c//不成立,理由同上
   dd//不成立,理由同上
   由题目定义S1和S2的初始值为0,如果(17)选择C,即P(S2)先运行,V(S1)后运行,即当开始顾客进程中的P
转载请注明原文地址:https://kaotiyun.com/show/8nxZ777K
0

相关试题推荐
最新回复(0)