问题 多项选择题

假定系统有三个并发进程read,move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的与读入的记录个数、次序完全一样。请用wait和signal原语写出它们的并发程序。

答案

参考答案:begin SR,SMA,SMB,SP:semaphore;
BA,BB:record;
SR:=A;SMA:=0;SMB:=A;SP:=0;
Cobegin
process read
X:record;
begin R:(接收来自输入设备上一个记录)
X:=接收的一个记录;
wait(SR);
BA:=X;
signal(SMA);
goto R;
end;
Process move
Y:record;
Begin
M:wait(SMA);
Y:=BA;
Signal (SR)
加工Y
wait(SMB);
BB:=Y;
signal(SP);
goto M;
end;
Process print
Z:record;
Begin
P:wait(SP);
Z:=BB;
signal(SMB)
打印Z
go to P;
end;
Coend;
end;

填空题
判断题