和尚取水问题

某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。

题目解析

  1. n个小和尚从井里面提水进程之间互斥,用 mutex1 来表示;
  2. n个小和尚将水倒在缸里、n个老和尚从缸里面取水,这些进程互斥,用 mutex2 来表示;
  3. 不管是谁要使用水桶都要确认空闲水桶的数量,用 amount 来表示;
  4. 用 full 来表示水缸里面有几桶水,用 empty 来表示水缸里面还能放几桶水;

代码

semaphore mutex1=1,mutex2=1;
semaphore amount=5,empty=30,full=0;void yong monk i(i=1,2,3,,,n) ()
{while(TRUE){P(empty);p(amount);P(mutex1);从井里打水;V(mutex1);P(mutex2);往缸里面倒水;V(mutex2);V(amount);V(full); }
}void old monk i(i=1,2,3,,,n) ()
{while(TRUE){P(full);P(amount);P(mutex2);从缸里面取水使用;V(mutex2);V(amount);V(empty); }
}void mian()
{cobeginyoung monk i(i=1,2,3,,,n) ();old monk i(i=1,2,3,,,n) ();coend
}

某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为相关推荐

  1. 【操作系统】某寺庙,住着一个老和尚和若干小和尚,有一个水缸,由小和尚提水入缸供老和尚饮用。水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个。每次往水缸中倒

    题目 某寺庙,住着一个老和尚和若干小和尚,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个.每次往水缸中倒水与从 ...

  2. 给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上。现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面

    对汉诺塔问题详解,给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上.现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面: 输入 ...

  3. 打印机顺序打印问题(一台打印机有若干个任务,但是打印机每次只能打印一个任务,每个任务是有优先级的,从1到9)

    一台打印机有若干个任务,但是打印机每次只能打印一个任务,每个任务是有优先级的,从1到9.打印的时候从序列的第一个开始,如果第一个的 优先级不是最大的,则将其出队,并加入队尾.若其优先级是最大的,则直接 ...

  4. 数据库中查询记录时是否每次只能使用一个索引?

    在网上看一些文章的时候,发现好几次下面这样的话: 如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,而使用复合索引因为索引 ...

  5. 返回多个不同类型参数的值(out)可变参数一维数组( params )把值从方法中带出(ref) 方法递归(方法自己调用自己与循坏类似注意return每次只能跳出一个方法))...

    //out参数  如果需要在方法中,返回多个值,并且是不同类型,可以使用out参数帮助我们返回.  out参数就是帮助我们在方法中返回多个不同类型的值.  out参数必须在方法的内部为其赋值,而在方法 ...

  6. 记录一种多个按钮中每次只能选中一个的实现方式

    阐述 本文旨在说明实现的思路. 当窗口创建很多QPushButton或者QPushButton的子类的时候,若要实现在众多的按钮中,每次被点击的按钮被选中,下一次点击另一个按钮的时候,上一个被选中的按 ...

  7. 操作系统PV操作伪代码(小和尚提水、老和尚饮水问题)

     题目: 某寺庙,有小和尚.老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用.水缸可容纳10桶水,每次入水.取水仅为1桶,不可同时进行.水取自同一井中,水井径窄,每次只能容纳一个水桶取水.设水 ...

  8. 什么是SpringMVC?SpringMVC之hello.jsp实现过程 问题:SpringMVC在JSP页面取不到ModelAndView中的值(已解决)

    兄弟,保持心情愉悦 初入本科,我就听到一个名词SSM,刚开始我还以为...wc计算机领域也好这口,当然在这里再次声明一下本人是个正经人,如果你翻看过的我的其他文章你会发现,我在最近发布的关与Sprin ...

  9. 教你如何使用Java代码从网页中爬取数据到数据库中——网络爬虫精华篇

    文章目录 1:网络爬虫介绍 2:HttpClients类介绍 2.1 HttpGet参数问题 2.2 HttpPost参数问题 2.3 连接池技术问题 3:Jsoup介绍 4:动手实践如何抓取网页上数 ...

最新文章

  1. Spring Cloud Contract 契约测试实践
  2. php 其他格式数据与数组互转
  3. 645. Set Mismatch(python)
  4. TCP/IP之大明内阁---协议的制定
  5. 浅谈ATP检查中的“确认可用部分数量”(二)
  6. 全局变量和局部变量命名规则_变量范围和LEGB规则
  7. InnerText和InnerXml的区别
  8. 威联通架设php网站_如何架设PHP服务器
  9. 化工企业数据分析平台项目之应收款分析
  10. Flutter之Binding简单梳理
  11. 如何从右键弹出菜单中清空删除数据加清空前提问确定
  12. C# string byte[] Base64 常用互相转换
  13. 小说阅读器未能连接服务器怎么办,小强小说阅读器无法加载小说章节的解决方法...
  14. Verilog 级联IIR滤波器设计
  15. word一打字就有下划线_word打字自带下划线 为什么WORD打字时总带有下划线,如何解决?...
  16. Windows使用 cwRsync进行文件夹同步
  17. JZOJ5444. 【NOIP2017提高A组冲刺11.2】救赎
  18. VP9编码(3)-- 符号
  19. apple授权登录(服务端)
  20. acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter

热门文章

  1. 本地Windows MIMIC III数据入库
  2. Android广播接收者使用总结
  3. Linux下的lds链接脚本二
  4. 【转载】没有安装Google App,如何与gmial账户同步联系人
  5. java http 用户名密码_Web后端语言模拟http请求(带用户名和密码)实例代码大全
  6. Android 输入法框架流程整理
  7. c语言进行数据统计分析的研究报告,统计分析报告范文
  8. 使用CDN实现应用的缓存和加速
  9. Python画糖葫芦和奥运五环
  10. java 文件解压缩zip_java解压缩zip文件