操作系统原理教学课件作者周苏第5章互斥与同步课件.pptVIP

  • 60
  • 0
  • 约2.66万字
  • 约 170页
  • 2016-12-30 发布于未知
  • 举报

操作系统原理教学课件作者周苏第5章互斥与同步课件.ppt

5.6 读者/写者问题 在生产者/消费者问题中,生产者不仅是一个写进程,它必须读取队列指针,以确定往哪里写下一项,并且它还必须确定缓冲区是否已满。类似地,消费者也不仅仅是一个读进程,它必须调整队列指针以显示它已经从缓冲区中移走了一个单元。 下面我们来分析读者/写者问题的两种解决方案。 5.6.1 读者优先 图5-21是使用信号量的一种解决方案,它给出了读进程和一个写进程的实例,该方案无须修改就可用于多个读进程和写进程的情况。 图5-21 使用信号量解决读者/写者问题的一种方法:读者优先 5.6.1 读者优先 写进程非常简单,信号量wsem用于实施互斥,只要一个写进程正在访问共享数据区,其他的写进程和读进程就都不能访问它。读进程也使用wsem实施互斥,但为了允许多个读进程,当没有读进程正在读时,第一个试图读的读进程需要在wsem上等待。当至少已经有一个读进程在读时,随后的读进程无须等待,可以直接进入。全局变量readcount用于记录读进程的数目,信号量x用于确保readcount被正确地更新。 5.6.2 写者优先 在前面的解决方案中,读进程具有优先权。当一个读进程开始访问数据区时,只要至少有一个读进程正在读,就为读进程保留对这个数据区的控制权,因此,写进程有可能处于饥饿状态。 5.6.2 写者优先 在前面的解决方案中,读进程具有优先权。当一个读进程开始访问数据区时,只

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档