当前位置:文档之家› 期中考试参考答案2资料讲解

期中考试参考答案2资料讲解

期中考试参考答案2
一、
CDAB ADAB
二、进程同步
1.假设有3个并发进程P,Q,R,其中P负责从输入设备上读入信息,并传送给Q,Q将信息加工后传送给R,R负责打印输出。

进程P,Q共享一个有m个缓冲区组成的缓冲池;进程Q,R共享一个有n个缓冲区组成的缓冲池(假设缓冲池足够大,进程间每次传输信息的单位均小于等于缓冲区长度),请写出满足上述条件的并发程序。

(12分)
var mutex1,mutex2,Sip,Siq,Soq,Sor:semaphore:=1,1,m,0,n,0;
begin
parbegin
Process P
begin
repeat
<读入信息>
wait(Sip);
wait(mutex1);
<数据放入缓冲区>
signal(mutex1);
signal(Siq);
until false
end;
Process Q
begin
repeat
wait(Siq);
wait(mutex1);
<从缓冲区中取出数据>
signal(mutex1);
signal(Sip);
<数据处理〉
wait(Soq);
wait(mutex2);
<处理后的数据放入缓冲区> signal(mutex2);
signal(Sor);
until false
end;
Process R
repeat
wait(Sor);
wait(mutex2);
<把数据送入打印机完成打印>;
signal(mutex2);
signal(Soq);
until false
end
parend
end
2.设置一个信号量s=2,表示盘子有两个空位置。

供爸爸和妈妈进程共享。

设置s1=0表示苹果的数量,s2=0表示桃子的数量。

设置mutex=1用来实现所有进程对盘子互斥访问。

Father:Begin
Repeat
Wait(s);
Wait(mutex);
放苹果
Signal(mutex);
Signal(s1)
Until false
End
Mother:Begin
Repeat
Wait(s);
Wait(mutex);
放桃子
Signal(mutex);
Signal(s2)
Until false
End
Son:Begin
Repeat
Wait(s1);
Wait(mutex);
取苹果
Signal(mutex);
Signal(s)
Until false
end
Daughter:Begin
Repeat
Wait(s2);
Wait(mutex);
取桃子
Signal(mutex);
Signal(s)
Until false
end
四、应用题
1、
2、(1)安全。

(2)不能(3)能(4)不能过程略。

相关主题