有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;

有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;P3 将缓冲区 2 中的内容打印出来,每执行一次打印一个记录。缓冲区的大小与记录大小一样。请用信号量机制来保证文件的正确打印。

// 缓存区大小和记录大小一样 故无需控制大小

emtpy1 = 1;//缓冲区1互斥

emtpy2 = 1;//缓冲区2互斥

full1 = 0;//缓冲区1中的记录

full2 = 0;//缓冲区2中的记录



p1(){

    while(1){

从磁盘读取一个记录;

p(emtpy1);

放入缓冲区1;

v(full1);//增加一个记录

    }

}



p2(){

    while(1){

p(full1);//等1中有记录

p(emtpy2);

v(full2);

从缓冲区1中取记录放入缓冲区2;

v(emtpy1);//释放缓冲区1

    }

}



p3(){

    while(1){

p(full2);//等缓冲区2中有记录

从缓冲区2中取出记录

v(emtpy2);//释放缓冲区2

打印;

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值