生产围棋的工人不小心把相等数量的黑子和白子混装在一个盒子里,现在要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程PA和PB组成,系统功能如下:
(1)PA专拣黑子,PB专拣白子;
(2)每个进程每次只拣一个子,当一个进程拣子时,不允许另一个进程去拣子;
(3)当一个进程拣一个子(黑或白)后,必须让另一个进程去拣一个子(白或黑)。
请回答:
(1)这两个并发进程之间的关系是同步还是互斥?
(2)写出PV操作管理时应定义的信号量及其初值。
(3)根据定义的信号量,写出用PV操作管理两个并发进程的程序。
(1)两个进程之间是同步关系。因为这两个进程都要从盒子里面拣棋子,但规定了 两个进程必须轮流取不同颜色的棋子,因而相互间要互通消息,这显然是一个进程同步问题。 (2)在该问题中应该区分“允许拣黑子’’和“允许拣白子,’两个消息,所以应该定义两个信号量S1和S2,分别和两个消息相对应,初值是S1:=1;S2:=0或者S1:=0;S2=1。 (3)程序如下: begin S1,S2:semaphore; S1:=1; S2:一0; cobegin process PA begin L1:P(S1); 拣黑子; V(S2); goto L1; end; process PB begin L2:P(S2); 拣白子; V(S1) goto L2; end; coend; end;