昨天在刷操作系统概论的题,在自考书上碰到个练习题,如下题。答案书上都有,可是我看不懂解题的原理,求大佬指点...
问题:有两个进程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);
打印数据;
}
这个答案,求大神解释一下.我看不懂...或者说为什么这样解?