pv
原理是用來解決作業系統程序之間的同步和互斥的.
同步:一補環境下的一組程序因相互制約而傳送訊息
,進行互相合作互相等待
.使各個程序按照一定的速度執行.
互斥:一組程序因為共享乙個公共資源
,必需保證同一時刻只有乙個程序在使用臨界資源.
舉乙個例子就是:
互斥就是很多人過乙個獨木橋
,同時只能有乙個人使用這個橋
同步就是兩個人同時過乙個橋
,乙個人騎車
,乙個人步行
.但是兩個人必需同時到達
.這兩個人同時出發
,騎車的人的比較快
,必需到一段等一下步行的人
.保證他們相互制約著到達.
訊號量:
代表併發程序可用資源數
,小於零表示正在等待資源的程序數.
p操作:
將訊號量減一
,如何訊號量
(sem)
為負數,
則呼叫p
操作的程序停止
,直到另乙個程序對同一訊號量做v操作
. v操作
: 將訊號量加一
,如何訊號量
(sem)
大於等於
0則在與
sem有關的佇列中喚醒乙個程序
,讓他執行.
這裡通過乙個例子來講述pv
操作不容易理解的地方.
這裡的訊號量sn
代表允許顧客人數 s
1代表收銀員收費 s
2代表顧客付款
a:p(sn) b1:v(s1) b2:p(s2) c1:p(s1) c2:v(s2)
分析說明:
我們不明白的一般都是
c1 c2 b1 b2
這幾個代表什麼
其實可以這麼來判斷:
有這幾個原則:
1:互斥的訊號量的
pv操作在乙個程序中出現
這裡的s
n是互斥的,所以
p(sn)
v(sn
)都在顧客程序裡面
2:同步的訊號量的
pv操作在兩個程序之間交替出現,比如
s1,s2
在顧客和收營員直接交替出現.3:
個人觀點
:pv操作難點就是同步的程序之間的操作
,這裡同步的程序對同一訊號量的操作
,一定是先p,
後v.p
操作是使用資源
,v操作是釋放資源
,程序一定是先使用資源
,然後再釋放資源
.這裡就像是騎車的和步行的人
,一開始他們都要走
,只是走的過程中會出現彼此等待的情況
,這就是說開始為什麼是
p操作了,因為
p操作是使用資源
,他們要走
,所以使用資源
.4:p
操作使訊號量小於零以後
,則停止當前程序
,等另乙個程序喚醒他
,也就是給這個訊號量加一.5:
當乙個v
操作結束後
,一般認為
,這個程序接下去執行
,執行下乙個p操作
,這裡指的是
p(s2)操作,
然後停止
,等待收銀員的
v操作喚醒他.
這些是個人看法,
作業系統 PV操作
1.pv原語的含義 p操作和v操作是不可中斷的程式段,稱為原語。pv原語及訊號量的概念都是由荷蘭科學家e.w.dijkstra提出的,其基本思路是用一種新的變數型別 semaphore 來記錄當前可用資源的數量。訊號量sem是一整數,sem大於等於零時代表可供併發程序使用的資源實體數,但sem小於零...
作業系統 PV操作
分析 進入書店p sn 與離開書店v sn 操作對應題目中的 該書店最多允許n個購書者進入 因為假如進入書店的人數超過了最大的限制,p操作會被阻塞,知道v操作執行後釋放空間。接下來分析購書與收費的流程,現實生活中購書付款是顧客提出繳費的要求後,收銀員才能進行收費。所以收銀員預設是處於待機狀態即阻塞狀...
作業系統 pv之道
我們的生活每天都有很多的事情發生,大部分事情我們可以自行處理,有些事情我們就要和其他人合作,比如去飯館吃飯,飯館是我們的乙個經常光顧的地方,但是我們往往會碰到這樣的情況,附近只有這一家飯館,我很餓,不想去別的飯館,剛剛我來的時候沒有了位置,服務員讓我等,看到別人在那吃得滿嘴流油,恨啊 剛剛的場景,很...