osPV操作題目彙總

步驟:(前V後P)

1:明確題目中都有哪些進程,以及要做什麼事情
2:找出其中的互斥關係,設置互斥信號量mutex(初值爲1)
3:找出其中的同步關係,畫出同步圖,設置同步信號量並設初值
4:根據同步信號量寫pv操作(別忘了設初值)

生產者消費者

一個生產者一個消費者,多個緩衝區
進程:生產者 消費者
互斥信號量:mutex(緩衝區)
同步信號量:full,empty,

  生產者                     消費者

 生產一個產品             P(full)
 P(empty)              P(mutex)
 P(mutex)             從緩衝區中取
 放入緩衝區              V(mutex)
 V(mutex)             V(empty)
 V(full)                消費        
 

多生產者多消費者

蘋果橘子問題

實現“桌子上有一隻盤子,最多可容納兩個水果,每次只能放入或取出一個水果。爸爸專向盤子中放蘋果(apple),媽媽專向盤子中N放橘子(orange),兩個兒子專等喫盤子中的橘子,兩個女兒專等喫盤子中的蘋果。請用PV操作來實現爸爸、媽媽、兒子、女兒之間的同步與互斥關係。”
進程:爸爸、媽媽、兒子、女兒
互斥:盤子
父親
在這裏插入圖片描述
在這裏插入圖片描述

吸菸者

假設一個系統有三個抽菸者進程和一個供應者進程。每個抽菸者不停地捲菸並抽掉它,但是要捲起並抽掉一支菸,抽菸者需要有三種材料:菸草、紙和膠水。三個抽菸者中,第一個擁有菸草、 第二個擁有紙、第三個擁有膠水。供應者進程無限地ᨀ供三種材料,供應者每次將兩種材料放桌子上,擁有剩下那種材料的抽菸者卷一根菸並抽掉它,並給供應者進程一個信號告訴完成了,供應者就會放另外兩種材料再桌上,這個過程一直重複(讓三個抽菸者輪流地抽菸)
在這裏插入圖片描述

哲學家進餐

在這裏插入圖片描述

讀者寫者問題

允許多個讀者可以同時對文件執行讀操作
寫文件時不能有其他讀者讀,也不能有其他寫者寫

在這裏插入圖片描述

從緩衝區取奇偶數

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

倉庫中產品的存取存在限制

在這裏插入圖片描述在這裏插入圖片描述 mutex:每次只能放一個
只有B-A<N 才能繼續向裏邊放A (sb初值設爲N-1)
只有A-B<M才能繼續向裏邊放B(B要少一點)(sa初值設爲M-1)
在這裏插入圖片描述
在這裏插入圖片描述

麪包師和推銷人員

在這裏插入圖片描述
在這裏插入圖片描述

參觀博物館

在這裏插入圖片描述
在這裏插入圖片描述

工廠生產零件裝配產品

在這裏插入圖片描述在這裏插入圖片描述 在這裏插入圖片描述
在這裏插入圖片描述
對於裝配車間剛開始有一個疑惑,爲什麼不是把full1 full2在前邊直接減一,這樣難道不會取完一個另一個沒有了,這樣阻塞問題怎麼辦呢?
回答:
如果全部在前邊減一了,那麼若F1爲空,即使此時F2上有貨物,但由於阻塞到F1 那裏了,那麼F2也沒辦法取
而如果分開減的話,若F1順利取走,F2此時阻塞,那麼進程F3就會阻塞,直到F2貨架上有產品之後,F3順利執行

老和尚和小和尚

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

三個進程同步的PV操作

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

銀行顧客和營業員的PV操作

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

NS汽車橋上通行問題(相當於兩個讀者)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

自行車生產線加工自行車(生產消費+死鎖;)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

一個既是生產者也是消費者

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這個問題對於既是消費者又是生產者的那個進程,不用考慮的太複雜,其實就是根據當前緩衝區的情況來決定到底是生產者還是消費者,加一個if語句就可以了

理髮師和顧客問題

在這裏插入圖片描述
在這裏插入圖片描述

播放影片的PV操作

在這裏插入圖片描述
s是電影院變量,count分別讀者共享
在這裏插入圖片描述

安全島通行問題

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

在這裏插入圖片描述

公交車售票問題

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
注意s1,s2 不能都是1,如果都爲1,兩個p操作就都能進行了,失去同步關係,可以假定在開車狀態,一個設1一個設0
也可以向答案中的那樣,利用先v後p

信箱中取信問題

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章