乙個PV操作題引發的思考,如何看待程序間同步 互斥

2021-09-30 08:38:31 字數 1295 閱讀 2328

這是一道選擇題,答案是:

(設,收銀員和顧客的私有訊號量為s1和

s2)

a:p(sn);b1

:v(s1);b2

:p(s2);c1

:p(s1);c2

:v(s2);

我是這樣理解

pv定義的,在

b1處執行

v(s1)

操作,那麼執行

v操作的程序即是私有訊號量

s1的所有者――收銀員程序的

,那麼此處

s1=1 ,

進而執行收銀員程序。

在這裡,對

pv定義理解方面我們出現了分歧。

另一組的同學,不太支援這種理解,但當

b1出為

v(s1)

時,s1=1

,按照定義則繼續執行

v操作的程序,即繼續執行顧客程序,而非進入到收銀員程序中去。這樣答案就不成立了.

清楚詳細的理解

pv操作以及

pv之間的臨界資源分配,才能使我們更好的、更準確的解決

pv操作題。

這樣說更容易理解一些,直接將

p操作理解為申請資源,

v操作理解為釋放資源。在

b1處釋放了資源,那麼在c1

關於pv

************************************  以下,是我對本篇部落格的補充。 ************************************

「三個臭皮匠,頂個諸葛亮」 ,這說明群眾的智慧型是巨大的。

通過瀏覽同學們的部落格,經過多個版本的pv操作解釋,在

王鵬的博文

中,我得到了比較清晰明了的答案。

「顧客程序與收銀員程序由於是同步關係,所以二者程序其實在一開始就併發執行,收銀員程序執行到p(s1)時,由於s=s-1,s1得-1,所以等待,顧客程序執行到v(s1)時此時由於s1為-1,經s=s+1計算s1為0,所以喚醒收銀員程序p(s1),

此時顧客程序是繼續進行的,執行到p(s2)時,s2經計算得-1,所以等待,收銀員程序執行到v(s2)時,s2經計算得0,所以喚醒顧客程序,收銀員程序繼續執行,執行到p(s1)時,由於s1經計算得-1,所以等待,而此時顧客程序執行完畢離開超市。」

按照比較說得通的版本來講,處理這種pv操作題,要清楚題中涉及的程序之間的同時執行的關係。我在看題的過程中忽略了這一點,導致我著重拿著pv定義來啃,深究具體執行pv操作的程序是哪個程序。

問題總是越討論越清晰的,多**很重要,儘量減少」想當然「的次數。

2010-10-12 23:29:12

乙個PV操作題引發的思考,如何看待程序間同步 互斥

這是一道選擇題,答案是 設,收銀員和顧客的私有訊號量為s1和s2 a p sn b1 v s1 b2 p s2 c1 p s1 c2 v s2 我是這樣理解pv定義的,在b1處執行v s1 操作,那麼執行 v操作的程序即是私有訊號量s1的所有者 收銀員程序的,那麼此處s1 1 進而執行收銀員程序。在...

乙個PV操作題引發的思考,如何看待程序間同步 互斥

這是一道選擇題,答案是 設,收銀員和顧客的私有訊號量為s1和 s2 a p sn b1 v s1 b2 p s2 c1 p s1 c2 v s2 我是這樣理解 pv定義的,在 b1處執行 v s1 操作,那麼執行 v操作的程序即是私有訊號量 s1的所有者 收銀員程序的 那麼此處 s1 1 進而執行收...

乙個事故引發的思考

今天線上服務出現了乙個事故,思考下這個事故,覺得有好幾個地方需要思考。1 對於前端而言,回滾的功能是必須的。前端介面出現了問題,第乙個應該想到的是將 回滾到乙個穩定版本。2 快取和資料庫的使用,需要注意乙個問題,當快取失效的時候,可能會有大併發的請求去訪問資料庫,這個時候資料庫會不會崩潰?如果這個時...