操作系统小和尚挑水,老和尚喝水问题

某寺庙,有小和尚、老和尚若干。一水桶,有一水缸,由小和尚提水入缸供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为3。每次入、取缸水仅为一桶,且不可同时进行。试给出有关取水、入水的算法描述。【北京邮电1998】

无论什么问题一定要按照常规去做,所以以一般思维逻辑思考就可以
小和尚肯定是要看缸里面有没有满,如果没有满,就去找水桶,然后就去打水,把水倒到水桶里面,,,,,一般的思维逻辑思考问题就行

1.总体来看要写两个进程,小和尚打水,老和尚要喝水
2.水缸的初值要设为 empty=10 水桶的初值要设为tong=3
3.取水缸/倒水往水缸里面 不能同时进行 所以要设置互斥变量 s1=1
4.水井径窄,每次只能容一个水桶取水 所以要设置互斥变量 s2=1
5.老和尚如何能喝水呢所以要设置full=0来判断水桶里面的水

p小和尚(){
wait(empty);//看水缸里面的水
wait(tong);//打水的桶
wait(s2)
打水
signal(s2);
wait(s1);
往水缸里面倒水
signal(s1)

signal(tong);
signal(full);

}

    p老和尚(){
       wait(full);
       wait(tong);
       wait(s1);
       取水;
       signal(s1);
       signal(tong);
       signal(empty);

     
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宋加油啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值