计算机方面的一个问题,希望详细解答

来源:百度知道 编辑:UC知道 时间:2024/06/01 23:12:30
3个并发进程 R,M,P共享一个缓冲器,R负责从输入设备读信息,每读一个记录后把它存放到缓冲器b中,进程m在缓冲器b中加工进程r 存入的记录。进程p把加工的记录打印输出,缓冲器b每次只能存放一个记录 ,当记录被加工输出后,缓冲器b中有可存放一个新记录,请用pv操作为同步机制写出他们并发执行能正确工作的程序
会的快来啊
会的都来看看啊 急啊
答出追加100啊

我也是大学学操作系统的时候学的,权当是做作业,帮帮忙,不确定是正确的,不好意思。
第一步:确定进程间的关系。由其功能可知,进程间的关系为同步关系。
第二步:确定信号量及其值。进程R,M和P共享缓冲器这个公有资源,但规定三个进程必须轮流去缓冲器中进行操作,因而相互间要互通消息。对于进程R可设置一个私有信号量s1,该私有信号量用于判断进程R是否能将从输入设备读出的信息放入缓冲器,初值为1。对于进程M同样设置一个私有信号量s2,该私有信号量用于判断进程M是否能去缓冲器中处理进程R存入的记录,初值为0。对于进程P同样设置一个私有信号量s3,该私有信号量用于判断进程P是否能去把加工的记录打印输出,初值为0。
实现:
begin
s1,s2,s3:semaphore;
s1:=1;s2:=0;s3:=0;
cobegin
process R
begin
L1: P(s1);
将从输入设备读出的信息放入缓冲器;
V(s2);
goto L1;
end;
process M
begin
L2:P(s2);
处理进程R存入的记录;
V(s3);
goto L2;
end;
process P
begin
L3:P(s3);
把加工的记录打印输出;
V(s1);
goto L3;
end;
coend;
end;