问答题 如图2-2所示,三个合作进程P1、P2、P3,它们都需要通过同一设备输入各自的数据a、b、c,该输入设备必须互斥地使用,而且其第一个数据必须由P1进程读取,第二个数据必须由P2进程读取,第三个数据则必须由P3进程读取。然后,三个进程分别对输入数据进行下列计算:
【正确答案】正确答案:为了控制三个进程依次使用输入设备进行输入,需分别设置三个信号量s1、s2、s3,其中S1的初值为1。s2和S3的初值为0。使用上述信号量后,三个进程不会同时使用输入设备。故不必再为输入设备设置互斥信号量。另外,还需要设置信号量sb、Sy、Sz来表示数据b是否已经输入,以及Y、Z是否已计算完成,它们的初值均为0。三个进程的动作可描述为 P1() { P(S1); 从输入设备输入数据a; V(S2), P(Sb), x=a+b; P(Sy); P(Sz); 使用打印机打印出x、y、z的结果; } P2() { P(S2); 从输入设备输入数据b; V(S3); V《Sb); y=a*b, V(Sy); V(Sy); } P3() { P(S3); 从输入设备输入数据c; P(Sy); Z=y+c—a; V(Sz); }
【答案解析】