操作系统 --经典同步问题之吸烟者问题读者-写者问题(七)
一、吸烟者问题
1、问题描述
假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉,但是要卷起并抽掉一支烟,需要三种材料:烟草、纸、胶水。三个抽烟者中,每一个第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者无限提供三种材料,供应者每次将两种材料放桌子上,拥有剩下材料的抽烟者卷一支烟并抽掉它,并给供应者一个信号完成了,供应者就会把另外两种材料再放桌子上,这个过程一直重复(三个抽烟者轮流抽烟)
2、问题分析
1、关系分析。
供应者与三个抽烟者分别是同步关系。由于抽烟者无法同时满足两个或以上的抽烟者,三个抽烟者对抽烟这个动作互斥(或由三个抽烟者轮流抽烟得知)
2、整理思路。
四个进程,供应者作为生产者向三个抽烟者提供材料
3、信号量设置
信号量offer1、offer2、offer3分别表示烟草和纸组合,烟草和胶水组合,胶水和纸组合。信号量finish表示抽烟完成信号
3、实现
二、读者-写者问题
建议看视频讲解,容易理解
地址:https://www.bilibili.com/video/av31584226/?p=10 定位50分钟
1、问题描述
有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程 和其他进程(写进程或读进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:
- 允许多个读者可以同时对文件执行读操作;
- 只允许一个写者往文件中写信息;
- 任一写者再完成写操作之前不允许其他读者或写者工作;
- 写者执行写操作前,应让已有的读者和写者全部退出。
2、问题分析
3、实现
写优先:
操作系统 --经典同步问题之吸烟者问题读者-写者问题(七)相关推荐
- (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...
- 操作系统-经典同步例题
目录 1. 生产者/消费者问题 2. 读者和写者问题 3. 理发师睡觉问题 1. 生产者/消费者问题 描述: 一个或多个生产者产生数据并放入缓冲 每次只能有一个消费者从缓冲区取数据(互斥) 每次只能由 ...
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
转自:http://www.cnblogs.com/kubixuesheng/p/4355786.html 进程:是个动态的概念,指的是一个静态的程序对某个数据集的一次运行活动,而程序是静态的概念,是 ...
- 操作系统之进程管理:14、读者-写者问题
14.读者-写者问题 问题描述 解题思路 注意 问题描述 解题思路 分析: 无论是写写还是读写互斥都是对文件的互斥访问,需要一个互斥信号量rw,在读和写的前后加入互斥访问 问题1:但是这样的话无法实现 ...
- 【操作系统/OS笔记14】经典同步问题:读者-写者问题、哲学家就餐问题
本次笔记内容: 10.6 经典同步问题-1 10.7 经典同步问题-2 10.8 经典同步问题-3 10.9 经典同步问题-4 10.10 经典同步问题-5 10.11 经典同步问题-6 文章目录 读 ...
- (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...
- 操作系统 | PV操作七大经典问题 生产者消费者 读者写者 哲学家进餐 理发师理发睡觉 和尚打水 吸烟者 吃水果
一.生产者消费者问题 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案 ...
- 2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)
文章目录 0.前言 1.生产者-消费者问题 (1)问题描述 (2)问题分析 (3)如何实现? (4)实现互斥的P操作一定要在实现同步的P操作之后 (5)知识回顾与重要考点 2.多生产者-多消费者问题 ...
- 操作系统(四) | 经典进程的同步问题(生产者--消费者问题、哲学家进餐问题、读者--写者问题)
文章目录 生产者--消费者问题 分析 实现 哲学家进餐问题 方法一:最多4人同时拿左筷子,最终保证一人能进餐 方法二:同时给左右筷子 解法1:AND信号量 解法2:信号量保护机制 方法三:让奇数先左后 ...
最新文章
- 基于μC/OS—III的CC1120驱动程序设计
- Ubuntu10下MySQL搭建Amoeba系列(文章索引)
- @ConditionalOnMissingBean注解理解
- (转)使用XmlDocument类完成对XML的查、删、添、改
- 一文搞懂物联网Modbus通讯协议
- mysqldb mysql config,安装mysqldb python界面时找不到mysql_config
- ruby字符串截取字符串_如何在Ruby中附加字符串?
- python 导出数据并发邮件_Python 获取zabbix数据图并发邮件
- ZOJ 2859 二维RMQ(模板)
- 国家计算机房机柜接地图集,中国铁塔机房及室外机柜标准图集.pdf
- 《人工智能》机器学习 - 第1章 机器学习简介
- 基于高德地图实现热力地图和标记点显示文字
- java共享汽车租赁系统
- 使用Sbert预训练的TTS模型《Expressive Text-to-Speech using Style Tag》
- linux安装rlwrap 解决sqlplus不能上下翻问题
- 锁相环(PLL)的工作原理
- Android实战:CoolWeather酷欧天气(加强版数据接口)代码详解(上)
- SQLmap在进行SQL注入时的整个流程
- windows 消息处理
- 使用Java实现建造者模式