熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 操作系統 >> 正文

5.吸煙者問題[1]

2013-11-15 15:53:12  來源: 操作系統 

吸煙者問題(Smoker Problem)

 

  問題描述

  三個吸煙者在一間房間內還有一個香煙供應者為了制造並抽掉香煙每個吸煙者需要三樣東西煙草紙和火柴供應者有豐富的貨物提供三個吸煙者中第一個有自己的煙草第二個有自己的紙第三個有自己的火柴供應者將兩樣東西放在桌子上允許一個吸煙者進行對健康不利的吸煙當吸煙者完成吸煙後喚醒供應者供應者再放兩樣東西(隨機地)在桌面上然後喚醒另一個吸煙者試為吸煙者和供應者編寫程序解決問題

  問題分析

  k供應者seller隨即產生兩樣東西提供它們這裡用普通變量來表示

  k吸煙者進程smoker根據其排號不同擁有不同的一件東西假設號吸煙者擁有煙草tobacco號吸煙者擁有紙paper號吸煙者擁有火柴match其他號碼錯誤返回

  k吸煙者的序號代表他們擁有的東西用他們的序號和供應者產生的兩樣東西比較如果都不相等則說明他擁有的東西和供應者產生的東西匹配它可以吸煙如果其中一個相等則推出繼續排隊

  k mutex信號量代表一個只能進入的門每次只有一個吸煙者可以進入進行比較和吸煙

  k每個吸煙者在吸煙完畢之後出門之前要叫醒供應者調用seller進程

 

  The PV code Using Pascal

 

  var s S S S; semaphore;

  S:=; S:=S:=S:=;

  fiagflagfiag:Boolean;

  fiag:=flag:=flag:=true;

  cobegin

    process  供應者

    begin

      repeat

      P(S);

      取兩樣香煙原料放桌上flagi標記

      //nagonagenage  代表煙草火柴

 

    返回《操作系統之PV金典》

[]  []  


From:http://tw.wingwit.com/Article/program/czxt/201311/24140.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.