问答题 设有一个具有N个信息元素的环形缓冲区,A进程顺序地把信息写入缓冲区,B进程依次地从缓冲区中读出信息。回答下列问题:
(1)叙述A、B两个进程的相互制约关系。
(2)用P、V操作表示A、B进程的同步算法。

【正确答案】(1)A和B两个进程的相互制约关系是既有互斥又有同步:对缓冲区的访问必须互斥,并且当缓冲区满时,A进程不可以写,必须等待;当缓冲区空时,B进程不可以读,必须等待。
(2)用P、V操作表示A、B进程的同步算法如下:
BEGIN
Buffer: ARRAY [0..N-1] of integer;
m, out: Integer;
S0,S1,S2: Semaphore;
S0:=1; S1"=0; S2:=N;
in:=out:=0;
Cobegin
Process PROCEDURE A;
BEGIN
L1: 生产数据m;
P(S2); //等待可用的缓冲区空间
P(S0); //保护对in、out的操作
Buffer(in):=m;
in:=(in+1) MOD N;
V(S1); //有新数据,唤醒消费者进程
V(S0);
Goto L1
END
Process PROCEDURE B;
BEGIN
L2: P(S1); //等待新数据
P(S0); //保护对in、out的操作
m"=burfer(out);
out:=(out+1) MOD N;
V(S2); //增加可用空间
V(S0);
消费m;
goto L2
END
Coend
END
【答案解析】