操作系统综合题之“用记录型信号量机制的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);

打印数据;

}

 

posted @ 2024-03-20 20:15  骚哥  阅读(91)  评论(0编辑  收藏  举报