问答题 生产围棋的工人不小心将相等数量的黑子和白子混合装在一个盒子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程PA和PB组成,系统功能如下:PA专拣黑子,PB专拣白子;每次只拣一个子,当一个进程拣子时,不许另一个进程去拣子;当一个进程拣子后,必须让另一个进程拣子。
试回答:
(1)两个进程间是同步还是互斥?
(2)写出用P、V定义的信号量及其初值。
(3)写出P、V管理的两个并发进程的程序。

【正确答案】(1)同步关系。
(2)两个信号量:S1允许拣黑子;S2允许拣白子;初值为:0、1或1、0。
(3)程序如下:
main()
{
Semaphore S1, S2;
S1=1; S2=0;
cobegin
processPA();
processPB();
coend
}
processPA()
{
while(1)
{
P(S1);
拣黑子;
V(S2);
}
}
processPB()
{
while(1)
{
P(S2);
拣白子;
V(S1);
}
}
【答案解析】[解析] 本题目考查进程同步。由题意可知,这个问题是两个进程的简单同步问题。