关于信号量的使用,关键是我们将问题的真实过程理解透彻,问题中不能同时进行的动作需要信号量的保护机制来解决。
①生产者:满了不放
②消费者:空了不拿
③生产者消费者不能同时进行动作

Int in = 0, out = 0;
Item buffer[n];
Semaphore mutex = 1, empty = n, full = 0;
void producer(){do{produce an item in nextp;...Swait(empty, mutex)          如果不满,进入临界资源补货buffer[in]  = nextp;in = (in+1) % n;Ssignal(mutex, full);      放出临界资源,full数量加一}while(true);
}
void consumer(){
do
{Swait(full, mutex)         //如果不空,进入临界资源拿货nextp = buffer[out];out = (out+1) mod n;Ssignal(mutex, empty)      释放临界资源,empty加一consume the item in nextp;
}while(true)void main(){
parbeginprocedure();consumer();coend;
}

注意,生产者的步骤一定是,先判断货物的数量是不是满了, 再决进不进临界资源

如果生产者的顺序是,先进入临界资源,再判定货物数量是不是满的,这个时候发现货物满了,生产者就等待消费者来拿货物, 但是消费者来的时候发现里面有人在工作就直接走了。。。。。死锁了

操作系统 生产者消费者问题解释相关推荐

  1. 操作系统 —— 生产者消费者模型

    文章目录 1. 生产者消费者模型的理解 1.1 串行的概念 1.2 并行的概念 1.3 简单总结: 2. 基于阻塞队列(block queue)实现此模型 2.1 阻塞队列的实现 2.2 使用阻塞队列 ...

  2. 操作系统生产者消费者问题实验报告

    操作系统实验报告 进程通信 1. 问题描述及需求分析: 问题描述 本次实验实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素. ...

  3. 三、操作系统——生产者-消费者问题(两个同步一个互斥)

    一.问题描述 信号量机制实现进程互斥的步骤: 设置初值为1的互斥信号量 在访问临界区之间进行P操作 在访问完临界区之后进行V操作 信号量机制实现进程同步的步骤: 设置初值为0的同步信号量 在前操作之后 ...

  4. 操作系统——生产者-消费者问题

    一.简单生产者-消费者问题 问题描述:一组生产者进程和一组消费者进程共享一个初始为空.大小为 n 的缓冲区,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待:只有缓冲区不为空时,消费者才能 ...

  5. 操作系统 - - 生产者—消费者问题(PV操作)代码显示

    生产者 - 消费者问题 假设在生产者和消费者之间的公用缓冲池具有n个缓冲区,可利用互斥信号量mutex实现诸进程的互斥使用:利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量. 又 ...

  6. 操作系统——生产者消费者模型以及信号量

    生产者--消费者问题是 多个进程因共享一个缓存区而产生的相互依赖问题 .具体来说,生产者进程往往要往共享缓存区中放内容.消费者进程从共享缓存中取内容, 当缓存区满的时候 ,生产者进程需要等待消费者进程 ...

  7. 操作系统 — 生产者消费者模型

    生产者消费者模型 所谓的生产者消费者模型就是一个类似于队列一样的东西串起来,这个队列可以想像成一个存放产品的"仓库",生产者只需要关心这个 "仓库",并不需要关 ...

  8. [操作系统]生产者/消费者问题

    生产者/消费者问题也叫缓存绑定问题(bounded- buffer),是一个经典的.多进程同步问题. 单生产者和单消费者 仓库容量为一的情况 问题分析: 仓库有空位时,生产者才能生产产品,并放入仓库中 ...

  9. (二十二)操作系统-生产者·消费者问题

    文章目录 一.问题描述 二.问题分析 三.PV操作题目分析步骤 1. 关系分析 2. 整理思路 3. 设置信号量 4. 编写代码 四.能否改变相邻P.V操作的顺序? 五.小结 1. PV操作题目的解题 ...

  10. 操作系统—生产者消费者

    问题描述及需求分析 实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素.要求实现生产者与消费者之间的同步,即当缓冲池为空时,消 ...

最新文章

  1. 计算机教师个人诊改方案,教师个人诊改报告-20210716124929.doc-原创力文档
  2. Setup best practices for Agile Scrum in your organization
  3. three.js 几何体-组合网格_3dmax利用优化和多边形倒角制作饰品组合1
  4. oracle 创建视图、修改视图、删除视图、利用视图操作基本表
  5. Java web 基础
  6. php response.write,ASP_RESPONSE.WRITE和lt;%=%的区别,RESPONSE.WRITE与%=%都是ASP程 - phpStudy...
  7. jenkins修改任务工作目录
  8. 【转】JSch - Java实现的SFTP(文件下载详解篇)
  9. xmind转excel脚本(简化版)
  10. 使用Smart3D进行倾斜摄影实景建模详细教程
  11. 检测周转时间 TAT :TURN-AROUND TIME
  12. 【tensorflow 训练验证数据处理】制制作trian和val TXT的文件
  13. 2022年最新河北水利水电施工安全员模拟试题及答案
  14. 臭打游戏的看过来!Windows 11 22H2 这波加强直接起飞
  15. Window alert() 方法
  16. EAI_BOT越登智能车
  17. LuatOS快速上手——GPS定位
  18. java医院管理系统源码_医院管理信息系统
  19. 字符串和时间转换sql
  20. IE不能上网浏览的常见原因和解决方法:

热门文章

  1. Silverlight 解密游戏 之十 自定义粒子特效
  2. 3月10日 QR分解求非齐次线性,SVD分解求齐次线性最小二乘
  3. python内置类型
  4. Java 内存、HashMap、Hashtable面试题
  5. HanLP1.5.2 -python使用介绍
  6. 第四季-专题3-嵌入式Linux内核制作
  7. PHP学习思维导图--小树好久没长大了,给它加点枝叶
  8. IE11 0x2ee4 bug 以及类似问题解决方法
  9. VC6下OpenGL 开发环境的构建外加一个简单的二维网络棋盘绘制示例
  10. linux文件管理命令详解