计算机操作系统和尚打水问题
计算机操作系统和尚打水问题
计算机操作系统有一个很有趣的问题相信大家都碰到过,那就是和尚打水问题,下面由学习啦小编整理了计算机操作系统的和尚打水问题的相关知识,希望对你有帮助。
计算机操作系统的和尚打水问题描述
学习啦在线学习网 某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水.水桶总数为3个.每次入水、取水仅为一桶,且不可同时进行.试给出有关取水、入水的算法描述.
计算机操作系统的和尚打水问题解决方法
Var mutex1, mutex2, empty, full, count: semaphore;
学习啦在线学习网 mutex1:=1; mutex2:=1;
学习啦在线学习网 empty:=10; full:=0; count:=3;
process 小和尚:
begin
repeat
wait(empty);
学习啦在线学习网 wait(count);
学习啦在线学习网 wait(mutex1);
从井中取水;
signal(mutex1);
wait(mutex2);
送水入水缸;
signal(mutex2);
signal(count);
signal(full);
until false;
end
process 老和尚:
begin
repeat
学习啦在线学习网 wait(full);
wait(count);
学习啦在线学习网 wait(mutex2);
从缸中取水;
signal(mutex2);
signal(empty);
signal(count);
until false;
end