计算机操作系统有一个很有趣的问题相信大家都碰到过,那就是和尚打水问题,下面由小编整理了计算机操作系统的和尚打水问题的相关知识,希望对你有帮助。
计算机操作系统的和尚打水问题描述
某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳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