“Reader-Writer”问题

  • 问题描述
  • 问题分析
    • 关系分析
    • 求解思路
    • 信号量设置
  • 问题解决
    • 方案一
    • 方案二
    • 对比

问题描述

有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会冲突,但如果某个写进程和其他进程同时访问共享数据时可能会导致数据不一致的错误。

问题分析

关系分析

此问题的描述中可以分析出4条要求:

  1. 多个读者可以同时不冲突地读取文件内容
  2. 写者只能单个向文件中写信息
  3. 任一写者在完成写操作之前不允许其他读者或写者工作
  4. 写者执行写操作之前,必须等待其他读者或写者退出

因此,直观分析一下可知,读者和写者之间是互斥的,写者之间也是互斥的,读者之间不存在互斥但有同步关系。

求解思路

读者和写者两类进程。
写者进程和任何进程互斥。
读者必须实现与写者的互斥和其他读者的同步。
针对读者的情况,需要设计一个计数器,判断当前是否有读者读文件。

【操作系统】Semaphore处理读者-写者问题相关推荐

  1. 操作系统课程设计----读者-写者 问题(c语言)

    问题描述: 所谓读者写着问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题.读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以 ...

  2. 操作系统实验:读者写者问题

    一.实验目的: 通过实现读者写者问题理解进程及信号量的概念 二.实验要求: 创建一个控制台进程,此进程包含n个线程.用这n个线程来表示n个读者或写者.每个线程按相应测试数据文件的要求进行读写操作.用信 ...

  3. 操作系统中读者——写者问题的分析

    操作系统中读者--写者问题的分析 Analysis of readerwriter problem in operating system 摘要:本篇文章就操作系统中读者--写者问题进行利用记录型信号 ...

  4. 操作系统-读者写者问题,写者优先,多个读者可以同时读书(C++实现)

    最近在学习操作系统,对读者写者问题进行了实现,还存在部分问题. 关系:读者与写者互斥.写者与写者互斥  写者优先     临界资源:书(一本)     分析:互斥可用互斥信号量mutex,写者优先可设 ...

  5. 操作系统(四) | 经典进程的同步问题(生产者--消费者问题、哲学家进餐问题、读者--写者问题)

    文章目录 生产者--消费者问题 分析 实现 哲学家进餐问题 方法一:最多4人同时拿左筷子,最终保证一人能进餐 方法二:同时给左右筷子 解法1:AND信号量 解法2:信号量保护机制 方法三:让奇数先左后 ...

  6. 操作系统:读者写者问题

    操作系统:读者写者问题 问题: 一.读者-写者问题: 读者优先 二.读者-写者问题:写进程优先 三.读者写者问题的应用---独木桥问题 类型1.一次只能过一辆车 类型2.一次能过多辆车 四.总结 附代 ...

  7. 操作系统(二十六)读者写者问题

    2.3.9 读者写者问题 读者写者问题是十分经典的进程同步的问题,问题描述如下:读进程与写进程共享文件,但是写进程必须与其他进程互斥发生. 根据以上的题目要求我们可以得出一些互斥关系:写进程与写进程互 ...

  8. 操作系统:经典进程同步问题 之 生产者-消费者问题、读者-写者问题、哲学家进餐问题

    在进程同步中,经典的同步问题有:生产者-消费者问题.读者-写者问题.哲学家进餐问题. 一.生产者与消费者问题: 问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品:只有缓冲区不 ...

  9. 四、操作系统——读者写者问题(详解)

    一.问题描述: 二.需要满足的条件: 写进程与写进程之间必须互斥的写入数据(因为如果两个写进程同时对共享数据中的区域A中的数据进行写操作的话,会导致数据错误覆盖的问题) 写进程与读进程之间必须互斥的访 ...

最新文章

  1. 嵌入式面试C语言试题
  2. Flask的上下文管理机制
  3. 文件操作之按照字符读写文件
  4. ajax 载入html后不能执行其中的js解决方法
  5. linux下查看文件命令小结
  6. QT的QGraphicsItemGroup类的使用
  7. find命令--Linux命令应用大词典729个命令解读
  8. 大厂Java岗面试心得记录
  9. (c语言)将一个数组逆序输出
  10. ubuntu执行configure配置代码出现unable to guess system type报错
  11. 如何用计算机制作统计图,统计图制作_ai的环形统计图怎么制作
  12. 【信管1.1】信息系统与信息化
  13. python有道自动翻译_python爬虫之有道在线翻译
  14. 零基础小白深度学习入门篇
  15. 张小龙请回答:微信这些功能是咋想的?
  16. 项目实战:小米商城官网及秒杀高仿(html+css+js)
  17. 纯电动整车控制器-基于模型的开发
  18. 四大CPU架构的区别
  19. 一、系统间的通信技术
  20. 真实案例,手把手教你构建用户画像

热门文章

  1. Judy alpha 第七天
  2. hdu-5707-Combine String
  3. springboot jpa 创建数据库以及rabbitMQ分模块扫描问题
  4. A.PHP读取txt文本文件并分页显示的方法
  5. 感谢Thunder团队
  6. iOS定位服务与地图开发(3)---地理信息编码查询
  7. [读书笔记] Effective C++
  8. Golang——Println与键盘录入
  9. 复地邮箱服务器地址,打印服务器设置方法
  10. 红帽linux6的版本号,RedHat CentOS发行版本号及内核版本号对照表