这次介绍的几个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 国际」创作共享协议,转载请在文章明显位置注明作者及出处。鉴于博主处于考研复习期间,有什么问题请在评论区中提出,博主尽可能当天回复,加微信好友请注明原因

操作系统——吸烟者问题相关推荐

  1. 操作系统-吸烟者问题(C++信号量实现)

    三个吸烟者在一个房间内,有一个香烟供应商.为了制造并抽烟,每个吸烟者必须具备:烟草.纸和火柴.     三个吸烟者中,第一个有烟草,第二个有纸,第三个有火柴.供应者有丰富的货物,     随机将两样东 ...

  2. (二十四)操作系统-吸烟者问题

    文章目录 一.问题描述 二.问题分析 1.关系分析 2.整理思路 3.设置信号量 三.实现 四.总结 一.问题描述   假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉它,但是 ...

  3. 操作系统—吸烟者问题

    建议将思维导图保存下来观看,或点击这里在线查看

  4. 2.6操作系统(生产者消费问题 多生产者—消费者问题 吸烟者问题)

    目录 1.生产者消费问题 能否改变相邻P.V操作的顺序? 2.多生产者-消费者问题 如何实现? 可不可以不用互斥信号量? 如果盘子(缓冲区)容量为2 知识回顾与重要考点 3.吸烟者问题 如何实现  个 ...

  5. 操作系统(二十五)吸烟者问题-单生产者多消费者问题

    2.3.8 吸烟者问题-单生产者多消费者问题 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草.纸和胶水.三个抽烟者中,第 ...

  6. 2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)

    文章目录 0.前言 1.生产者-消费者问题 (1)问题描述 (2)问题分析 (3)如何实现? (4)实现互斥的P操作一定要在实现同步的P操作之后 (5)知识回顾与重要考点 2.多生产者-多消费者问题 ...

  7. 【操作系统】Semaphore处理吸烟者问题

    "吸烟者"问题 问题描述 问题分析 关系分析 求解思路 信号量设置 问题解决 问题描述 存在三个抽烟者和一个供应者. 每个抽烟者不停地卷烟并抽烟,烟有三种原材料:烟草.烟纸.胶水. ...

  8. 操作系统之进程管理:13、吸烟者问题

    13.吸烟者问题 问题描述 解题思路 解题过程 问题描述 解题思路 同步互斥分析: 初值选择: 1.由于初始时桌子上无东西,所以offer都为0 2.由于一开始都缺材料没有完成,所以finsh为0 解 ...

  9. (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...

最新文章

  1. OSPF的RID和DR/BDR的选举
  2. java 递归return_java递归和反向递归
  3. Spider_douyin
  4. win7 docker java开发环境变量_java – Docker. Spring应用程序.设置和获取环境变量
  5. 5G时代 我国在通信技术领域弯道超车指日可待
  6. 使用Spring MVC时的常见错误
  7. nginx查看配置文件nginx.conf路径
  8. html5环形流程图,环状流程图怎么画好看?5分钟让你精通绘制技巧
  9. Linkedin Camus,从Kafka到HDFS的数据传输管道
  10. OC基础--关键字@property 和 @synthesize
  11. 【官方】下载最新adb及安装驱动的方法
  12. vivo手机刷鸿蒙教程,vivo手机怎么刷机_vivo手机刷机全教程
  13. mysql 取月份天数_mysql 之 获取指定月份天数和指定月份上月天数
  14. MATLAB-非线性回归
  15. 2021全国特种设备-G3锅炉水处理模拟考试题库一[安考星]
  16. win10 nginx部署前端项目(静态资源服务器和HTML)
  17. 捷配浅谈PCB叠层的概念、设计原则
  18. 机原自检——第3章 平面机构的运动分析
  19. 【上】CS229 吴恩达机器学习 习题作业答案 problem sets 03 PS03(全部问题解答,欢迎各位前辈指教)
  20. 纯CSS3写的10个不同的酷炫图片遮罩层效果

热门文章

  1. android项目小说阅读开发背景颜色,Android 小说阅读护眼模式
  2. 单片机 串口通信实验
  3. 文件存取服务器是用的什么,什么是文件存储?
  4. CDN概念和基本原理
  5. apa引用要在文中吗_如何在研究论文中引用文献
  6. rx6800s什么水平N卡 rx6800s什么水平
  7. CSP 201409-5 拼图问题(给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中......)
  8. 树莓派+android+盒子,用树莓派作电视盒子,安装Android TV系统
  9. vux安装时报vux-loader配置问题
  10. 干货!JAVA容器-自问自答学HashMap