操作系统习题-全部
B1:=X;
signal(SM1);
goto R;
end;
Process move (3分)
Y:record;
Begin
M:wait(SM1);
Y:=B1;
signal(SR)
加工 Y
wait(SM2);
B2:=Y;
signal(SP);
goto M;
end;
Process print (3分)
Z:record;
Begin
P:wait(SP);
Z:=B2;
signal(SM2)
打印Z
goto P;
end;
coend;
end;
系统运行有三个进程:输入进程、计算进程和打印进程,它们协同完成工作。输入进程和计算进程之间共用缓冲区buffer1,计算进程和打印进程之间共用缓冲区buffer2。输入进程接收外部数据放入buffer1中;计算进程从buffer1中取出数据进行计算,然后将结果放入buffer2;打印进程从buffer2取出数据打印输出。
用算法描述这三个进程的工作情况,并用wait和signal原语实现其同步操作。
解:
解答:输入进程、计算进程和打印进程之间的同步问题描述如下:
var:mutex1,mutex2,empty1,empty2,full1,full2:=1,1,1,1,0,0;
InP:begin (3分)
repeat
wait(empty1);
wait(mutex1);
input a data from keyboard;
Add to buffer1;
signal(mutex1);
signal(full1);
until false
end
CalP:begin (3分)
repeat