這是一道選擇題,答案是:(設,收銀員和顧客的私有訊號量為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操作題。
************************************ 以下,是我對本篇部落格的補充。 ************************************
「三個臭皮匠,頂個諸葛亮」 ,這說明群眾的智慧型是巨大的。
通過瀏覽同學們的部落格,經過多個版本的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 快取和資料庫的使用,需要注意乙個問題,當快取失效的時候,可能會有大併發的請求去訪問資料庫,這個時候資料庫會不會崩潰?如果這個時...