計(jì)算機(jī)操作系統(tǒng)和尚打水問(wèn)題
計(jì)算機(jī)操作系統(tǒng)和尚打水問(wèn)題
計(jì)算機(jī)操作系統(tǒng)有一個(gè)很有趣的問(wèn)題相信大家都碰到過(guò),那就是和尚打水問(wèn)題,下面由學(xué)習(xí)啦小編整理了計(jì)算機(jī)操作系統(tǒng)的和尚打水問(wèn)題的相關(guān)知識(shí),希望對(duì)你有幫助。
計(jì)算機(jī)操作系統(tǒng)的和尚打水問(wèn)題描述
某寺廟,有小和尚和老和尚若干,有一個(gè)水缸,由小和尚提水入缸供老和尚飲用.水缸可以容納10桶水,水取自同一口井中,由于水井口窄,每次只能容納一個(gè)水桶取水.水桶總數(shù)為3個(gè).每次入水、取水僅為一桶,且不可同時(shí)進(jìn)行.試給出有關(guān)取水、入水的算法描述.
計(jì)算機(jī)操作系統(tǒng)的和尚打水問(wèn)題解決方法
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