操作系统——吸烟者问题
这次介绍的几个IPC(Inter-process Communication)进程间的通讯问题,加上上篇博客介绍的生产者-消费者问题及其变形,都是非常经典的IPC问题,在王道老师讲解的时候,弹幕一片“秒啊”、“666”,这几个问题的解决方案也着实让人着迷,当我带着怀疑去验证时候,又有一种豁然开朗的感觉,这些都是单一进程问题所不曾有过的。
一、问题描述
二、问题分析
该问题本质上是“可生产多种产品的单生产者—多消费者”问题。
三、如何实现
是否需要设置一个专门的互斥信号量呢?
并不需要,本题中的缓冲区大小为1,在任何时刻四个同步信号量中最多只有一个是1,在任何时刻只有一个进程的P操作不会被阻塞,并顺利地进入临界区!
semaphore offer1 = 0; semaphore offer2 = 0; semaphore offer3 = 0; semaphore finish = 0; int i = 0; provider(){while(1){if(i == 0){将组合一放桌上V(offer1);}else if(i == 1){将组合二放桌上V(offer2);}else id(i == 2){将组合三放桌上V(offer3);}i = (i+1)%3;P(finish);} } smoker1 (){while(1){P(offer1)从桌上拿走组合一;卷烟;抽掉;V(finish);} }smoker2 (){while(1){P(offer2)从桌上拿走组合二;卷烟;抽掉;V(finish);} }smoker3 (){while(1){P(offer3)从桌上拿走组合三;卷烟;抽掉;V(finish);} }
四、总结
吸烟者问题的精华是如何实现“轮流让各个吸烟者吸烟”,这里我们的解决方案是使用一个整形变量i来实现这个“轮流”过程的。
作者:王陸
出处:https://www.cnblogs.com/wkfvawl/
-------------------------------------------
个性签名:罔谈彼短,靡持己长。做一个谦逊爱学的人!
本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。鉴于博主处于考研复习期间,有什么问题请在评论区中提出,博主尽可能当天回复,加微信好友请注明原因
操作系统——吸烟者问题相关推荐
- 操作系统-吸烟者问题(C++信号量实现)
三个吸烟者在一个房间内,有一个香烟供应商.为了制造并抽烟,每个吸烟者必须具备:烟草.纸和火柴. 三个吸烟者中,第一个有烟草,第二个有纸,第三个有火柴.供应者有丰富的货物, 随机将两样东 ...
- (二十四)操作系统-吸烟者问题
文章目录 一.问题描述 二.问题分析 1.关系分析 2.整理思路 3.设置信号量 三.实现 四.总结 一.问题描述 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉它,但是 ...
- 操作系统—吸烟者问题
建议将思维导图保存下来观看,或点击这里在线查看
- 2.6操作系统(生产者消费问题 多生产者—消费者问题 吸烟者问题)
目录 1.生产者消费问题 能否改变相邻P.V操作的顺序? 2.多生产者-消费者问题 如何实现? 可不可以不用互斥信号量? 如果盘子(缓冲区)容量为2 知识回顾与重要考点 3.吸烟者问题 如何实现 个 ...
- 操作系统(二十五)吸烟者问题-单生产者多消费者问题
2.3.8 吸烟者问题-单生产者多消费者问题 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草.纸和胶水.三个抽烟者中,第 ...
- 2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)
文章目录 0.前言 1.生产者-消费者问题 (1)问题描述 (2)问题分析 (3)如何实现? (4)实现互斥的P操作一定要在实现同步的P操作之后 (5)知识回顾与重要考点 2.多生产者-多消费者问题 ...
- 【操作系统】Semaphore处理吸烟者问题
"吸烟者"问题 问题描述 问题分析 关系分析 求解思路 信号量设置 问题解决 问题描述 存在三个抽烟者和一个供应者. 每个抽烟者不停地卷烟并抽烟,烟有三种原材料:烟草.烟纸.胶水. ...
- 操作系统之进程管理:13、吸烟者问题
13.吸烟者问题 问题描述 解题思路 解题过程 问题描述 解题思路 同步互斥分析: 初值选择: 1.由于初始时桌子上无东西,所以offer都为0 2.由于一开始都缺材料没有完成,所以finsh为0 解 ...
- (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...
最新文章
- OSPF的RID和DR/BDR的选举
- java 递归return_java递归和反向递归
- Spider_douyin
- win7 docker java开发环境变量_java – Docker. Spring应用程序.设置和获取环境变量
- 5G时代 我国在通信技术领域弯道超车指日可待
- 使用Spring MVC时的常见错误
- nginx查看配置文件nginx.conf路径
- html5环形流程图,环状流程图怎么画好看?5分钟让你精通绘制技巧
- Linkedin Camus,从Kafka到HDFS的数据传输管道
- OC基础--关键字@property 和 @synthesize
- 【官方】下载最新adb及安装驱动的方法
- vivo手机刷鸿蒙教程,vivo手机怎么刷机_vivo手机刷机全教程
- mysql 取月份天数_mysql 之 获取指定月份天数和指定月份上月天数
- MATLAB-非线性回归
- 2021全国特种设备-G3锅炉水处理模拟考试题库一[安考星]
- win10 nginx部署前端项目(静态资源服务器和HTML)
- 捷配浅谈PCB叠层的概念、设计原则
- 机原自检——第3章 平面机构的运动分析
- 【上】CS229 吴恩达机器学习 习题作业答案 problem sets 03 PS03(全部问题解答,欢迎各位前辈指教)
- 纯CSS3写的10个不同的酷炫图片遮罩层效果
热门文章
- android项目小说阅读开发背景颜色,Android 小说阅读护眼模式
- 单片机 串口通信实验
- 文件存取服务器是用的什么,什么是文件存储?
- CDN概念和基本原理
- apa引用要在文中吗_如何在研究论文中引用文献
- rx6800s什么水平N卡 rx6800s什么水平
- CSP 201409-5 拼图问题(给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中......)
- 树莓派+android+盒子,用树莓派作电视盒子,安装Android TV系统
- vux安装时报vux-loader配置问题
- 干货!JAVA容器-自问自答学HashMap