操作系统PV操作伪代码(小和尚提水、老和尚饮水问题)
题目:
某寺庙,有小和尚、老和尚若干。庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳10桶水,每次入水、取水仅为1桶,不可同时进行。水取自同一井中,水井径窄,每次只能容纳一个水桶取水。设水桶个数为3个,试用信号量和PV操作给出老和尚和小和尚的活动。
提示:从井中取水并放入水缸是一个连续的动作可以视为一个进程,从缸中取水为另一个进程。
设水井和水缸为临界资源,引入mutex1,mutex2;三个水桶无论从井中取水还是放入
水缸中都一次一个,应该给他们一个信号量count,抢不到水桶的进程只好为等待,水缸满了时,不可以再放水了。设empty控制入水量,水缸空了时,不可取水设full。
伪代码:
int n1 = 10; /*水缸容量*/int n2 = 3; /*水桶数量*/semaphore mutex1 = 1; /*水井互斥信号量*/semaphore mutex2 = 1; /*水缸互斥信号量*/semaphore empty = n1; /*小和尚取水同步信号量*/semaphore full = 0; /*老和尚饮水同步信号量*/semaphore count = n2; /*水桶数信号量*/void youngMonk(){while (1){P(empty);P(count);P(mutex1);//小和尚从井中取水V(mutex1);p(mutex2);//小和尚向缸中倒水V(mutex2);V(count);V(full);}}void oldMonk(){while (1){P(full);P(count);P(mutex2);//老和尚从缸中取水饮用V(mutex2);V(count);V(empty);}}
操作系统PV操作伪代码(小和尚提水、老和尚饮水问题)相关推荐
- 操作系统 | PV操作七大经典问题 生产者消费者 读者写者 哲学家进餐 理发师理发睡觉 和尚打水 吸烟者 吃水果
一.生产者消费者问题 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案 ...
- 某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为
和尚取水问题 某寺庙,有小和尚.老和尚若干.有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用.水缸可容30桶水,水取自同一井中.水井径窄,每次只能容一个水桶取水.水桶总数为5个.每次 ...
- 计算机操作系统PV操作
PV操作 和尚打水问题 某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水.水桶总数为3个.每次入水 ...
- 操作系统-PV操作-独木桥问题
操作系统-PV操作-独木桥问题 前言 问题描述 解决思路 伪代码实现 改造题型 解决思路 伪代码实现 总结 前言 在操作系统中,使用pv操作实现进程的同步和互斥是进程管理的重要内容.pv操作不仅是本科 ...
- 操作系统-PV操作-理发师问题
操作系统-PV操作-理发师问题 前言 问题描述 解决思路 伪代码 总结 前言 hello,大家好,使用pv操作来实现进程的同步和互斥是我们本科授课的重点,同时也是研究生入学考试的重点考察题型.今天给大 ...
- 小和尚和老和尚取水问题
一.问题描述 某寺庙有小和尚.老和尚若干.有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用.水缸可容10桶水,水取自同一井中.水井径窄,每次只能容一个水桶取水.水桶总数为3个.每次入 ...
- 操作系统pv操作学习总结
PV操作 PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思. 目录 1 简介 2 详细资料 3 解释 ▪ 信号量的概念 ▪ 典型理解偏差 简介 1962年,狄克斯特拉离开数学中心进入位于 ...
- 计算机操作系统pv实验,计算机操作系统PV操作例题.doc
计算机操作系统PV操作例题 问题1 一个司机与售票员的例子 在公共汽车上,为保证乘客的安全,司机和售票员应协调工作: 停车后才能开门,关车门后才能行车.用PV操作来实现他们之间的协调. S1:是否允许 ...
- 操作系统——PV操作
PV操作概念:操作系统中的一种同步机制,实现对于并发进程中临界区的管理. 并发进程分为两种: ①无交互的并发进程:每个进程是相互独立的,谁也不影响谁,基本不会用到PV操作. ②有交互的并发进程:多个进 ...
最新文章
- linux C 内存管理方式之半动态
- C++ XML解析之TinyXML篇
- C++类的静态成员详解
- AFNetworking速成教程
- Linux系统管理技术(3)
- .NET 正则验证邮箱
- Cocos2D:塔防游戏制作之旅(九)
- scratch编程体感游戏
- 【LaTeX入门】02、CJK环境讲解
- 探花交友10-数据统计与内容审核
- 免费、好用、强大的开源笔记软件综合评测
- 00 后程序员就要为“你”加班?呵呵
- astrolog php,Astrolog星象学软件使用指南(2)
- vi新建一个shell脚本_如何在Vim中为Shell脚本创建自定义页眉模板
- win7旗舰版出现COM Surrogate已停止工作
- idea如何import_导入项目
- NB-IoT技术优势及其与GPS定位的综合应用
- 使用CSS 中伪元素:before 和:after 做简单的动画(以小米商城非首页 logo 动画为例)
- 苹果 Fitness+ Apple Watch“去散步”即将推出
- Vue SSR 服务端渲染原理(简易版本)