計算機作業系統和尚打水問題

  計算機作業系統有一個很有趣的問題相信大家都碰到過,那就是和尚打水問題,下面由小編整理了計算機作業系統的和尚打水問題的相關知識,希望對你有幫助。

  計算機作業系統的和尚打水問題描述

  某寺廟,有小和尚和老和尚若干,有一個水缸,由小和尚提水入缸供老和尚飲用.水缸可以容納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