哲學(xué)家進(jìn)餐問題是荷蘭學(xué)者Dijkstra 提出的經(jīng)典問題之一,它是一個信號量機(jī)制問題的應(yīng)用,在操作系統(tǒng)文化史上具有非常重要的地位。對該問題的剖析有助于學(xué)生深刻地理解計算機(jī)系統(tǒng)中的資源共享、進(jìn)程同步、死鎖等問題,并能熟練地應(yīng)用信號量來解決生活中的控制流程,即將生活中的控制流程用形式化的方式表達(dá)出來。
假設(shè)有5個哲學(xué)家,他們花費(fèi)一生中的時光思考和吃飯。這些哲學(xué)家共用一個圓桌,每個哲學(xué)家都有一把椅子。在桌子中央是一碗通心面,在桌子上放著5只筷子。(如圖所示)當(dāng)一個哲學(xué)家思考時,他與其他同事不交互。時而,哲學(xué)家會感到饑餓,并試圖拿起與他相近的兩只筷子(他與鄰近左、右之間的筷子)。一個哲學(xué)家一次只能拿起一只筷子。顯然,他不能從其他哲學(xué)家手里拿走筷子。當(dāng)一個饑餓的哲學(xué)家同時有兩只筷子時,他就不能不用釋放他的筷子而自己吃了。當(dāng)吃完后,他會放下兩只筷子,并再次開始思考。
規(guī)定奇數(shù)號哲學(xué)家先拿他左邊的筷子,然后再去拿右邊的筷子;而偶數(shù)號哲學(xué)家則相反。按此規(guī)定,將是1、 2號哲學(xué)家競爭1號筷子;3、4號哲學(xué)家競爭3號筷子。即五位哲學(xué)家都先競爭奇數(shù)號筷子,獲得后,再去競爭偶數(shù)號筷子,最后總會有一位哲學(xué)家能獲得兩只筷子而進(jìn)餐。
標(biāo)簽:
Dijkstra
家
信號量
地理
上傳時間:
2013-12-10
上傳用戶:zhangzhenyu