1、桌上有一只盘子,每次只能放入一个水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个女儿专等吃盘中的苹果,一个儿子专等吃盘中的桔子。试用P,V操作写出他们(4个并发进程)能同步的程序。

semaphore plate=1,apple=0, orange=0;
father() {//这是父亲进程while(1) {P (plate) ;//互斥的向盘中取、放水果put an apple;//向盘中放苹果V(apple) ;//允许取苹果}
}mother() {//这是母亲进程while(1) {P (plate);//互斥向盘中取、放水果put an orange;//向盘子中放橘子V (orange) ;//允许取橘子}
}son() {//这是儿子进程while(1) {P (orange);//互斥向盘中取橘子eat an orange;V (plate) ;//允许向盘在中取、放水果}
}daughter() {//女儿进程while(1) {P (apple) ;//互斥的向盘中取苹果eat the apple;V(plate) ;//运行向盘子中取、放水果}
}
void main(){cobeginfather();mother();son();daughter();coend
}

2、桌上有1空盘,最多允许存放1个水果。爸爸可以向盘中放苹果,也可以向盘中放桔子。儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放1个水果供吃者取用。请用Wait()、Signal()原语实现爸爸、儿子、女儿三个并发进程的同步。

semaphore empty=1,mutex=1,apple=0,orange=0;  //为四个信号量赋初值
void father(){while(TRUE){wait(empty);    //等待盘子为空wait(mutex);    //等待获取对盘子的操作爸爸向盘中放一个苹果或者桔子;signal(mutex);   //释放对盘子的操作
//不能够直接拿apple或者orange来进行判断,因为semaphore变量不能够用来判断if(put_in_apple){//注意,这里是新的变量并且不能是semaphore类型的变量signal(apple);   //通知女儿可以来盘子中取苹果}else{signal(orange);// 通知儿子来取桔子}}
}
void son(){                        while(TRUE){wait(orange);       //判断盘子中是否有桔子wait(mutex);        //等待获取对盘子的操作get an orange;       //儿子获得一个橘子signal(mutex);      //释放对盘子的操作signal(empty);      //盘子空了,可以继续放水果了}
}
void daugther(){               //与儿子进程相似while(TRUE){wait(apple);wait(mutex);get an apple;//女儿获得一个苹果signal(mutex);signal(empty);}
}
void main() {              cobeginfather();son();daugther();coend
}

操作系统前边的这些还是相对比较基础和重要的,所以建议大家一定要把前边的基础打牢固,多进行相对题目的练习,这样才能更好地进行后边知识点的学习。

桌上有一只盘子,每次只能放入一个水果。请用Wait()、Signal()原语实现爸爸、儿子、女儿三个并发进程的同步。相关推荐

  1. 桌上有一空盘,最多允许存放一个水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。

    问题描述:桌上有一空盘,最多允许存放一个水果.爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果. 试用P.V操作实现爸爸.儿子.女儿三个并发进程的同步. 问题分析及思路: 本题 ...

  2. 桌上有一空盘,最多允许存放两只水果,爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,两个儿子专等吃盘中的桔子,两个女儿专等吃苹果。用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步。

    放水果问题 桌上有一空盘,最多允许存放两只水果每次只能放入或是取出一只放一个苹果,爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,两个儿子专等吃盘中的桔子,两个女儿专等吃苹果.用P.V操作实现爸爸.妈 ...

  3. (多线程同步练习)桌子上有一只盘子,每次只能放一只水果,爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子里的橘子,一个女儿专等吃盘子里的苹果。写出能使爸爸、妈妈、儿子、女儿正确同步工作的

    这是操作系统的一道课堂练习题 题目完整描述: 桌子上有一只盘子,每次只能放一只水果,爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子里的橘子,一个女儿专等吃盘子里的苹果.写出能使爸爸.妈 ...

  4. 桌上有一空盘,最多允许存放一只水果。爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。用wait、signal操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步。

    分析设计四个信号量metux,empty.apple.orange: metux表示:爸爸.妈妈.儿子和女儿进程对盘子的互斥使用: empty表示:盘子是否为空: apple表示:是否可以取苹果: o ...

  5. char N2Char(int n)函数:将一个整数转换为字符串,并放入一个字符串中

    //将一个整数转换为字符串,并放入一个字符串中 char N2Char(int n)//一次只能转换一个数 {int i;char c;if ((i = n / 10) != 0)N2Char(i); ...

  6. mysql 事务 select_mysql 多个select需要放入一个事务吗?

    第一次写博客,还请大家多多支持 今天同事问了个问题:在多个select的时候,用不用放入同一个事务? 首先先看个例子: publicclassJDBCClient { publicstaticvoid ...

  7. Flutter一切皆widget但是不要将所有东西放入一个widget

    本文主要介绍Flutter一切皆widget但是不要将所有东西放入一个widget 作为 Flutter 开发人员,我相信您在您的开发生活中至少听说过这句流行的句子:"**一切都是widge ...

  8. 打印1-400以内 能同时被5和9 整数的数将这些数放入一个列表中,再输出这个列表

    import java.util.ArrayList;/*** @author silence* 打印1-400以内 能同时被5和9 整数的数将这些数放入一个列表中,再输出这个列表*/ public ...

  9. 集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。

    集合练习.学生信息包括学号.姓名.出生日期.性别.把N个学生的信息放入一个集合中.可以根据学号,对学生信息进行检索.并可以根据生日进行排序输出. Student.java package Collec ...

最新文章

  1. 深度解析java内存原理
  2. CODEVS-1082-线段树练习3-splay
  3. windows下安装nginx
  4. MySQL表结构优化
  5. 华为搭载鸿蒙系统的手表,华为手表Watch 3即将发布:搭载鸿蒙系统
  6. 【176天】黑马程序员27天视频学习笔记【Day11-上】
  7. a推b等价于非a或b_分级基金谢幕倒计时 警惕分级B高溢价风险
  8. 在powerpoint中默认的视图是_专升本计算机《Word、Excel、Powerpoint》知识点
  9. 【白皮书】2020在线教育用户增长闭环白皮书.pdf(附下载链接)
  10. Atitit 软件运行环境平台的变迁 attilax大总结 1.1.Native os时代 1.2.Vm时代 java net php 1.3.Script时代 js node。js 1.4.B
  11. UG基本命令ug快捷键命令大全ug基本命令教程完整版
  12. 【HCIE 论述题】OSPF-1(区域划分)
  13. Android使用TextToSpeech(TTS)实现文字转语音合成播放
  14. 浅谈JSP编程的网店管理系统构造
  15. 计算机键入命令,win7系统安装软件出现命令行选项语法错误键入“ 命令/?”怎么办...
  16. 红烧茄子做法--小黄讲解
  17. 计算机a类论文有哪些,a类核心期刊有哪些
  18. 火焰检测网络(October, 2018,ICIP)
  19. Oracle trace level
  20. 转:S3C2440上LCD驱动(FrameBuffer)实例开发详解

热门文章

  1. python讲义学习 day02
  2. (转)Android QQ空间(Apad)项目总结(三)---应用UI框架的搭建!!!
  3. Metasploit攻击win7实例(上)
  4. Confluence7(WIKI) 安装部署(傻瓜式)
  5. 如何用UE4制作2D游戏文档(一)——基础篇
  6. 分析ERP审单失败,提示:库存不足的原因及应对方案
  7. 人工智能革命:一个在ANI上运行的世界
  8. P1875 佳佳的魔法药水
  9. linux中seliunux配置文件,SELinux 入门简介
  10. 测试员就是“背锅侠”?学会这些,扔掉测试人常背的3口“锅”