操作系统—PV操作解决和尚打水问题

和尚打水问题

寺庙中有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个。每次入水、取水仅为一桶,且不可同时进行。试给出有关取水、入水的PV算法描述。

问题分析:

小和尚之间是互斥关系,老和尚之间是互斥关系,老和尚和小和尚是互斥+合作;这样的话就可以看成是一个生产者消费者问题,只是互斥信号量比生产者消费者问题多了;井,缸,水桶都是要被“保护”的,所以对它们分别设mutex1,mutex2,mutex3,初值分别设为1,1,3;针对可以装10桶水的缸,可以看成生产者消费者问题里面的产品缓冲区,设一个empty告诉小和尚空了几桶水的位置,设一个full告诉老和尚有几桶水可以打。

解析过程:

信号量定义:
mutex1:表示是否可以在井中打水;
mutex2:表示是否可以在将桶伸入缸中;
mutex3:表示是否有桶可用;
empty:表示缸中有多少是空的;
full:表示缸中有多少是满的。
mutex1=mutex2=1;mutex3=3;empty=0;full=10。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值