os中同步鎖的位置問題

2021-10-08 17:36:20 字數 648 閱讀 7600

今日看19年的408的哲學家吃飯問題,對同步鎖的位置有些困惑,與生產消費者的鎖的問題是剛好相反的。

比如19年的題

有n(n≥3)位哲學家圍坐在一張圓桌邊,每位哲學家交替地就餐和思考。在

圓桌中心有m(m≥1)個碗,每兩位哲學家之間有一根筷子。每位哲學家必須取到乙個碗和兩

側的筷子後,才能就餐,進餐完畢,將碗和筷子放回原位,並繼續思考。為使盡可能多的哲學

家同時就餐,且防止出現死鎖現象,請使用訊號量的p、v 操作[wait()、signal()操作]描述上

述過程中的互斥與同步,並說明所用訊號量及初值的含義。

semaphore mutex=(n-1)這裡的鎖資源是放在進入拿資源的前面

只要在拿筷子前面就ok

而如果是生產者消費者問題

可以發現

ar items = 0, space = 10, mutex = 1;

var in = 0, out = 0;

item buf[10] = ;

producer

}consumer

}

鎖是在最裡面的

如果鎖在最外面 ,那麼如果 進入鎖之後 ,如果直接為空 ,直接死鎖。。

這就是完全沒有聯絡的問題。。。。。。不要糾結了

關於os路徑的位置

記錄下os.path.dirname file 使用 os.path.dirname file 使用 該測試指令碼所在的位置 d 第1層 第2層 第3層 第4層 第5層 test11.py test11.py import os 該檔案所在位置 d 第1層 第2層 第3層 第4層 第5層 test1...

同步鎖synchronized中的類鎖,物件鎖

關於同步鎖的幾篇有用的文章 如果synchronized 修飾的非靜態方法 沒有static修飾 則鎖的是例項物件,物件鎖 synchronized this 使用的也是物件鎖 如果synchronized 修飾的是靜態方法,則鎖的是類物件,是類鎖 synchronized synchronized...

OS中的自對映問題

對於每個程序而言都能看到 4g的記憶體,乙個頁是 4k,一共有 4g 4k 2 20 個頁。每個程序中都有自己的乙個頁目錄 一級頁表 這個頁目錄可以管轄 1024 個二級頁表,充足情況下程序會有 1024 個二級頁表。那麼這 1024 個頁對於使用者來說就不用了,可以從 2 20 個頁表中去除,實際...