操作系统综合题之“用记录型信号量机制的wait和signal操作来保证文件的正确打印,并写出同步代码(代码补充)”
1.问题:有两个进程pA和pB合作解决文件打印的问题:pA将文件记录从磁盘读入住库存的缓冲区,每次执行一次读一个记录;pB将缓冲区的内容打印出来,每次执行一次打印一个记录。缓冲区的大小等于一个记录大小
请用记录型信号量机制的wait(S)和signal(S)操作来保证文件的正确打印,并写出同步代码
2.参考答案
答:为了缓冲区设置互斥信号量mutex,设置资源信号量empty和full。
3个信号量的初始值分别为mutex.vlaue = 1,empty.value = 1 ,full.value = 0
pA{
从文件中读一条记录;
wait(empty);
外推(mutex);
将数据写入缓冲区;
signal(mutex);
signal(full);
}
pB{
wait(full);
wait(mutex);
从缓冲区中读一条记录;
signal(mutex);
signal(empty);
打印数据;
}
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com