【正确答案】
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),离开超市,释放资源。