有3个并发进程R、M、P,它们共享同一个缓冲区,假定缓冲区只能存放一条记录。进程R负责从输入设备读信息,每读入一个记录后,就把它放进缓冲区;进程 M在缓冲区中加工读入的记录;进程P把加工后的记录打印输出。读入的记录经加工输出后,缓冲区又可以存放下一个记录。试写出他们能够正确执行的并发程序。

PV原语:
三个进程共用一个缓冲区,他们必须同步工作,可定义三个信号量:

S1:表示是否可把读人的记录放到缓冲区,初始值为1.

S2:表示是否可对缓冲区中的记录加工,初始值为0.

S3:表示记录是否加工好,可以输出,初始值也为0.

三个进程可如下设计:

begin

S1,S2,S3:semaphore;

S1:=l;S2:=S3:=0;

cobegin

process R

begin

L1:读记录;

P(S1);

记录存入缓冲区;

V(S2);

goto L1;

end;

process M

begin

L2:P(S2);

加工记录;

V(S3);

goto L2;

end;

process P

begin

L3:P(S3);

输出加工后的记录;

V(S1);

goto L3;

end;

coend;

end.
posted on 2010-03-02 21:02 Ying-er 阅读(216) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: