问答题 某银行提供一个服务窗口和10个供顾客等待的座位。顾客到达银行是,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动描述如下:
Cobegin

Process顾客i

从取号机获取一个号码;
等待叫号;
获取服务;

Process营业员

While(true)
叫号;
为顾客服务;

coend
请添加必要的信号量和P,V操作,实现上诉过程的互斥与同步。

【正确答案】Cobegin
{
Semaphore S1=10;//座位的资源数目是10;
Mutex=1;//只有一个取号机;
S2;//营业员与顾客保持同步的信号量;
Process顾客i
P(S1);//等待有一个空闲位置;
P(mutex);//申请取号机;
从取号机获取一个号码;
V(mutex);//释放取号机;
V(S2);//通知营业员有顾客到来;
等待叫号;
V(S1);//释放一个座位;
获取服务;
}
Process营业员
{
While(true){
P(S2);//营业员得到顾客到来的信息;
叫号;
为顾客服务;
}coend
【答案解析】