记录型信号量机制综合应用题

昨天在刷操作系统概论的题,在自考书上碰到个练习题,如下题。答案书上都有,可是我看不懂解题的原理,求大佬指点...

问题:有两个进程pA,pB合作解决文件打印问题:pA将文件记录从磁盘读入主存
的缓冲区,每执行一次读一个记录;pB将缓冲区的内容打印出来,每执行一
次打印一个记录。缓冲区的大小等于一个记录的大小。请用记录型信号量机
制的wait(s) 和 signal(s) 操作来保证文件的正确打印,并写出同步代码。

答案

为缓冲区设置互斥信号量mutex,另设两个信号量empty,full。初始值分别为:
mutex.value = 1
empty.value = 1
full.value = 0
pA
{从文件中读一条记录;
wait(empty);
wait(mutex);
将数据写入缓冲区;
signal(mutex);
signal(full);
}

pB
{
wait(full);
wait(mutex);
从缓冲区中读一条记录;
signal(mutex);
signal(empty);
打印数据;
}
这个答案,求大神解释一下.我看不懂...或者说为什么这样解?

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题