經(jīng)典PIC問題

哲學家進餐:

哲學家問題可出現(xiàn)拿起左邊的筷子,然后拿起右邊的筷子進餐,但是假如五個哲學家同時拿起左邊的筷子,那么右邊的筷子都取不到

你可能這樣思考就是就是你拿起左邊的筷子,查看右邊的筷子是否可用,如果不可用,等一會在重復上述問題,但是可能在某一瞬間,所有哲學家都拿起左邊的筷子,然后發(fā)現(xiàn)沒有右邊的筷子,同時又放下左邊的筷子,這樣重復下去,這種情況成為饑餓

解決上述方法可以使用一個二進制信號量,這里面有一個性能問題,就是采用信號量同一時間只有一個哲學家就餐,但是實際上可以允許倆個哲學家就餐

這里面涉及倆個信號量一個臨界區(qū)信號量,代表著同一時刻只有一個哲學家,另一個信號量是哲學家信號量如果一個哲學家準備就餐,那么down該信號量,如果倆個叉子都可用,那么會吃面,然后放下叉子,如果獲取不到叉子那么就會,就會把他的哲學家信號量down然后阻塞還哲學家,就是他不能就餐然后必須等別人放下叉子之后就可以了

讀-寫者問題:

它為數(shù)據(jù)庫訪問建立了一個模型

有一種解法就是,第一個讀者對該信號量執(zhí)行一個down操作,隨后讀者只是遞增一個計數(shù)器rc,然后讀者離開時,遞減這個計數(shù)器。但是這里面有一個問題,由于寫操作是排他的,所以寫操作到來時,只要有讀操作那么,寫操作永遠都不會被執(zhí)行,寫操作后面的讀操作都被允許訪問數(shù)據(jù)庫。提供了一種解法就是如果寫操作到來那么后面的讀操作都會被阻塞,寫操作前的讀操作結(jié)束之后寫操作就會被執(zhí)行

理發(fā)師睡覺問題

這個問題的原型是一個理發(fā)椅,多個顧客等待椅,一個理發(fā)師,如果沒有客人那么理發(fā)師睡覺,第一個客人來到了,那么它獲得信號量,其他客人只能等第一個客人釋放信號量,他才能繼續(xù)剪頭,如果等待剪頭的椅子滿了的話,顧客就離開了,等待顧客也是獲得該信號量,只不過阻塞在該信號量上,有顧客來就把up顧客的信號量,顧客釋放了信號量,理發(fā)師先獲得信號量,整理之后才能剪頭,然后顧客才能獲得該信號量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 過橋問題 一條河上架設(shè)了由N個橋墩組成的一座橋。若一個橋墩只能站一個人,過河的人只能沿著橋向前走而不能向后退。過河...
    Azur_wxj閱讀 5,646評論 0 6
  • 本文摘自湯小丹主編《計算機操作系統(tǒng)》(第三版)2.4 經(jīng)典進程的同步問 在多道程序環(huán)境下,進程同步問題十分重要,也...
    劉帥_閱讀 4,784評論 1 1
  • 問題描述 一張圓桌上坐著5名哲學家,每兩個哲學家之間的桌上擺一根筷子,桌子的中間是一碗米飯。哲學家們傾注畢生精力用...
    saviochen閱讀 3,094評論 1 8
  • 生活中總是有些人說話辦事不招人待見。 遇到這樣的人,能怎么辦呢? 我只能做好自己的那50%,然后想辦法遠離那個讓自...
    小牧心閱讀 183評論 0 0

友情鏈接更多精彩內(nèi)容