早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

●在某超市里有一个收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的

题目

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

图1工作流程图

(17) A.P(S1)

B.P(S2)

C.P(Sn)

D.P(Sn)、P(S1)

(18) A.P(Sn)、V(S2)

B.P(Sn)、V(S1)

C.P(S2)、V(S1)

D.V(S1)、P(S2)

(19) A.P(S1)、V(S2)

B.P(Sn)、V(S1)

C.P(S2)、V(S1)

D.V(S1)、P(S2)

参考答案
正确答案:C,D,A
【解析】S1是收银员进程的私用信号量;S2是顾客进程的私用信号量。由题意可知:每当有一个顾客进入时,允许进入的人数就-1,所以应该是对信号量Sn的P操作,选C,即P(Sn)。很明显,付款进程和收银员进程是一个多消费者和一个生产者的问题。开始前应该判断收银员进程是否忙。忙则挂起等待,不忙则付款。收银员进程判断是否有人来付款,有人则让其他进程等待,没人则自己挂起等待。收银完毕,则自己允许其他进程调用。因为Sn初值为n,而收银员只有一个同时也只能处理一个付款者。可以排除所有(17)、(18)中的P(Sn)的选项。cacc∥不成立,因为S1和S2信号量没有P,V成对,即只有消费或者生产cd∥不成立,理由同上dadc∥不成立,理由同上dd∥不成立,理由同上由题目定义S1和S2的初始值为0,如果(17)选择C,即P(S2)先运行,V(S1)后运行,即当开始顾客进程中的P(S2),则S2-1=-1,则顾客进程挂起;同时收银员进程执行P(S1),则S1-1=-1,则收银员进程挂起,属于典型的死锁。