操作系统经典问题之吸烟者问题
一、吸烟者问题
假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者进程无限地提供三种材料,供应者每次将两种材料放到桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,此时供应者就会将另外两种材料放到桌上,如此重复(让三个抽烟者轮流地抽烟)。
二、代码实现
int temp=randomnum;//定义随机数
semaphore offer1=0;
semaphore offer2=0;
semaphore offer2=0;
semaphore finish=0;
offer(){while(1){if(temp%3==0)V(offer1);if(temp2%3==1)V(offer2);if(temp2%3==2)V(offer3);P(finish);}
}
smoker1(){while(1){P(offer1);//吸烟V(finish);}
}
smoker2(){while(1){P(offer2);//吸烟V(finish);}
}
smoker3(){while(1){P(offer3);//吸烟V(finish);}
}
操作系统经典问题之吸烟者问题相关推荐
- 操作系统 --经典同步问题之吸烟者问题读者-写者问题(七)
一.吸烟者问题 1.问题描述 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉,但是要卷起并抽掉一支烟,需要三种材料:烟草.纸.胶水.三个抽烟者中,每一个第一个拥有烟草,第二个 ...
- 计算机操作系统——经典进程的同步问题
计算机操作系统--信号量机制与经典进程的同步问题 信号量机制 随着发展,信号量从整型信号量经记录型信号量,进而发展为"信号量集"机制. 一般来说,信号量的值与相应的资源的使用情况有 ...
- 超硬核!学霸把操作系统经典算法给敲完了!要知行合一
上期的笔记,浏览快1万了,既然关注的人很多,那就发出来承诺过的算法全模拟,希望帮到你们. 上期的操作系统学霸笔记,考试复习面试全靠它 一.模拟进程调度 功能 data.h #ifndef _Data_ ...
- 【操作系统】Semaphore处理吸烟者问题
"吸烟者"问题 问题描述 问题分析 关系分析 求解思路 信号量设置 问题解决 问题描述 存在三个抽烟者和一个供应者. 每个抽烟者不停地卷烟并抽烟,烟有三种原材料:烟草.烟纸.胶水. ...
- 计算机操作系统经典进程同步问题
经典进程同步问题 1 )生产者-消费者问题(合作互斥) 1)利用记录型信号量解决 2)利用AND型信号量解决 2)哲学家进餐问题(资源耗尽,避免死锁) 1)利用记录型信号量解决 2)利用AND型信号量 ...
- 操作系统经典20题总结==上岸
面试的过程中,为了考察面试者的基础功力,除了算法以外,操作系统将会占比很大的权重,本文给大家分享我在面试过程中出现的非常高频的面试题,我基本上会从两个角度来阐述,一个是"官话",一 ...
- 经典进程同步问题——吸烟者问题
吸烟者问题是为了解决"可以生产多个产品的单生产者"问题提供了一个思路. 问题描述:有三个抽烟者和一个供应者.每个抽烟者不停地卷烟抽,组成一根烟需要三种材料:烟草.纸和胶水.三个抽烟 ...
- 操作系统经典书籍--现代操作系统
- 操作系统经典独木桥问题
问题描述 相传杭电和理工中间有一条狭窄的南北通道,该通道同一个方向行人可连续通过:当某一方向有学生过通道时,另一个方向的学生必须等待:当某一方向无学生过通道时,另外方向的学生可以过通道.(用信号量解决 ...
最新文章
- scrollview中嵌套listview产生冲突问题
- 外国人居留证申请程序
- Quartz.Net进阶之四:CronTrigger 详述
- rxjs里concatMap operators的用法
- 智能电视系列(4)-高通,天才与极限
- Alibaba之MySQL宝典_阿里巴巴内部 MySQL宝典 意外流出!极致经典,堪称数据库的天花板...
- 关于wordpress站点地图代码调试
- 读书:冯友兰的《中国哲学简史》
- sdi线缆标准_影片创作与未来标准监看——监视器DP-V2421使用手记
- 增量式pid调节方式有何优点_PID控制在变频器驱动系统中的应用
- 最像windows的linux系统,盘点酷似Windows的Linux发行版
- python︱六款中文分词模块尝试:jieba、THULAC、SnowNLP、pynlpir、CoreNLP、pyLTP
- odi lkm mysql_Oracle ODI系列之一(ODI知识模块)
- Android修行手册 - ConstraintLayout示例
- 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)
- 计算机基础---学习笔记
- Python制作日历
- 基于pythonGUI的图形绘图及图元编辑系统
- Dijkstra算法正确性证明
- 大环套小环、小环围着大环转!
热门文章
- 计算机网络实践网线制作,网线怎么制作
- FANUC数控机床的维修 从原理开始(二)
- 【折腾】独立博客之「熵」
- 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!
- 在Virtual Box中安装Windows7 64位虚拟机系统
- 每天学日语:日语输入法教程及日文键盘分部图
- 考研逻辑整理 - 类比推理和归纳推理
- Psins代码解析之静基座仿真(test_SINS_static.m)傅科、修拉周期水平通道误差传播(test_SINS_static_verify.m)
- FCKeditor相关问题
- 音视频开发之旅(58) -H.264 帧内预测