使用信号量和PV操作实现父亲、母亲、儿子、女儿4人,通过一个可以容纳1个水果的盘子进行削水果吃水果的活动协同。

问题描述:

桌子上有一只盘子,每次只能向其中放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,儿子专等着吃盘子中的橘子,女儿专等着吃盘子中的苹果。只有盘子空时,爸爸或妈妈才 可向盘子中放一个水果。仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。 用PV操作实现上述过程。

问题分析:

桌子上有一只盘子,每次只能向其中放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等着吃盘子中的橘子,女儿专等着吃盘子中的苹果。只有盘子空时,爸爸或妈妈才可向盘子中放一个水果。仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。

同步关系(一前一后):

父亲将苹果放入盘子后,女儿才能取苹果,设苹果数为apple,初始值为0
母亲将橘子放入盘子后,儿子才能取橘子,设橘子数为orange,初始值为0
只有盘子为空时,父亲或母亲才能放入水果,设盘子中水果数为plate,初始值为0

PV操作解答:

semaphore plate=1;//盘子还可以放多少个水果
semaphore orange=0;//盘子中橘子的数量
semaphore apple=0;//盘子中苹果的数量
dad(){while(1){准备一个苹果;p(plate);//若plate=1,则可以访问盘子,进行放苹果操作,若plate=0,则盘子已经有水果,需在此等待向盘子放苹果V(apple);//唤醒女儿吃苹果}
}
mom(){while(1){准备一个橘子;P(plate);向盘子放橘子;V(orange);//唤醒儿子吃苹果}
}
son(){while(1){P(orange);//若orange=0,则等待母亲放入水果从盘子拿橘子;V(plate);//橘子已被拿走,盘子可放水果数量加1,唤醒父亲母亲放入水果。吃橘子;}
}
daughter(){while(){P(apple);//若apple=0,则等待父亲放入水果从盘子中拿苹果;V(plate);//苹果已经被拿走,盘子可放水果数量加1,唤醒父亲母亲放入水果。}
}

操作系统 吃水果放水果问题 PV操作相关推荐

  1. 8 操作系统第二章 进程管理 信号量 PV操作 用信号量机制实现 进程互斥、同 步、前驱关系

    文章目录 1 信号量机制 1.1 整形信号量 1.2 记录形信号量 1.3 信号量机制小结 2 用信号量机制实现进程互斥.同 步.前驱关系 2.1 信号量机制实现进程互斥 2.2 信号量机制实现进程同 ...

  2. 【操作系统-进程】PV操作——生产者消费者问题

    文章目录 生产者消费者问题的万能方法步骤 Step 1. 有几类进程 Step 2. 用中文描述动作 Step 3. 添加 PV 操作,用中文描述里面的操作 Step 4. 检查是否出现死锁 Step ...

  3. 操作系统9道经典PV操作

    文章目录 仓库存储 放水果 放水果2 理发师理发 吸烟者问题 面包师问题 写者优先的读者-写者问题 交通问题 共用缓冲区 仓库存储 问题描述:有一个仓库,可以存放A和B两种产品,仓库的存储空间足够大, ...

  4. 操作系统作业三:PV操作

    文章目录 作业1 作业2 作业1 题目:桌上有一空盘,只允许存放一个水果.爸爸专向盘中放橙子,妈妈专向盘中放苹果,女儿专等吃橙子,儿子专等吃苹果.规定当盘空时一次只能放一个水果供吃者自用,请用PV操作 ...

  5. 【大佬勿看】首次软考暂告一段落,记录一波备考经历,下次(不)再来!!(附PV操作和数据流图解析)

    前言 5月29日,三舞订婚了,我的首次软考经历也结束了,这个日期,在心里越久就越觉得特别,总觉得需要点仪式感去纪念,于是有了这篇文章~ 此处回顾一下备考,希望能督促自己坚持学习 ( •̀ ω •́ ) ...

  6. 操作系统 | PV操作七大经典问题 生产者消费者 读者写者 哲学家进餐 理发师理发睡觉 和尚打水 吸烟者 吃水果

    一.生产者消费者问题 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案 ...

  7. PV操作经典例题——吃水果

    例1:桌上有一个盘子,每次只能放一个水果,妈妈向盘中放苹果和橘子,儿子专等吃盘里的橘子,女儿专等吃盘里的苹果.只要盘子空,妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请给出他 ...

  8. linux环境下pv吃水果问题c语言,用pv操作实现 吃水果问题(C++语言)

    /** 作者:wwj 时间:2012/4/12 功能:实现吃水果问题 **题目内容:桌子有一只盘子,只允许放一个水果,父亲专向盘子放苹果,母亲专向盘子放桔子 儿子专等吃盘子的桔子,女儿专等吃盘子的苹果 ...

  9. 操作系统中的P-V操作(转)

    信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信号量的变量及对它进行的两个原语操作.信号量为一个整数,我们设这个信号量为:sem.很显然,我们规定在sem大于等于 ...

最新文章

  1. 给python点颜色青少年学编程_早晨送给自己的句子,句句经典励志!
  2. 转:strcat与strcpy与strcmp与strlen
  3. DQN笔记:MC TD
  4. 深入JVM彻底剖析前面ygc越来越慢的case
  5. 词汇量贫乏只会说yes、no?试试这些高级感替代词!
  6. MLP is Best?
  7. 贪心/动态规划 - 摆动序列
  8. js中的extend的用法及其JS中substring与substr的区别
  9. vs下使用qt设置应用程序的图标
  10. ios 时间戳 当前时间 相互转化
  11. 用winform实现一个B/S代码更新打包工具
  12. 图表下面的文字怎么变竖排_Excel中如何制作多维组合图表?
  13. winform C#中Byte与String的转换方法,相互转换
  14. GitHut上最受关注的Objective-C项目
  15. 支持Kubernetes集群运维审计,JumpServer v2.2.0发布丨Release Notes
  16. 统计信息:SQL执行优化之密钥
  17. win10 android 传多个文件夹,win10怎么使用ROBOCOPY快速复制多个文件夹
  18. [ZZ]AppiumForWindows 菜鸟计划合集
  19. 转载:BP(反向传播算法)公式推导及例题解析
  20. 2022.02.11学习总结(kmp)

热门文章

  1. ISP和IAP的一些基本概念
  2. 1231 统计闰年(1)
  3. asp.net不用服务器控件
  4. 用c++输出一个等腰三角形
  5. java生成英雄与怪物对象,java 创建一个LOL中的英雄类和怪物类 初学者,求大神指点...
  6. [导入]了解OGRE——起步常见问题
  7. 这15个HTML/CSS错误我不信你没犯过(网站规范)
  8. 从技术实现角度看信贷ABS业务(三)
  9. 帝国CMS仿hao123漫画网站模板动态版
  10. Gallery Server Pro ----用于分享相片,视频,音频及其他媒体的ASP.NET相册[Carol]