1.PV操作的相關概念
| 臨界資源
雖然多個進程可以共享系統中的各種資源,但其中許多資源一次只能為一個進程所使用,我們把一次僅允許一個進程使用的資源稱為臨界資源。許多物理設備都屬於臨界資源,如打印機等。此外,還有許多變量、數據等都可以被若干進程共享,也屬於臨界資源。
| 臨界區
對臨界資源的訪問,必須互斥地進行,在每個進程中,訪問臨界資源的那段代碼稱為臨界區。
| 信號量機制
信號量的數據結構為一個值和一個指針,指針指向等待該信號量的下一個進程。信號量的值與相應資源的使用情況有關。
| 信號量的物理含義
S>0 表示有S個資源可用
S=0 表示無資源可用
S<0 則 |S| 表示S等待隊列中的進程個數
| PV操作
用於處理進程互斥問題,協調資源的作用。
P操作,代表需要、申請、鎖定、占用資源。信號量 S - 1;
如果減 1 后大於等於 0,即 S - 1 >= 0,即 S >= 1 ,則往下執行,
有些題目里,如果進程需要開啟,那信號量往往就要滿足這個條件,起碼要 S = 1。
V操作,代表釋放資源,信號量 S + 1;
如果加 1 后大於 0,即 S + 1 > 0 ,則往下執行
V操作之后,信號量如果還是為零甚至為負,說明資源釋放得還不夠,程序還要繼續進行釋放,不能進行下一步。
例:進程P1、P2、P3、P4和P5的前趨圖如下圖所示:
若用PV操作控制進程P1、P2、P3、P4和P5的並發執行過程,則需要設置5個信號量S1、S2、S3、S4和S5,且信號量S1~S5的初值都等於零。下圖中a和b處應分別填入___;c和d處應分別填入___;e和f處應分別填入___。
解答:
根據前趨圖,P1進程執行完需要通知P2和P3進程,所以需要利用V(S1)和V(S2)操作通知P2和P3進程,所以空a應該填V(S1)和V(S2),P2進程執行完要通知P4進程,所以空b應該填V(S3)。
P3進程運行前需要等待P1進程的結果,所以執行程序前要先利用1個P操作,所以空c應該填P(S2),而P3進程運行結束需要利用一個V操作通知P5進程,所以空d應該填V(S4)。
P4進程執行結束需要利用一個V操作通知P5進程,所以空e應該填V(S5),P5進程執行前需要等待P3和P4進程的結果,所以空f處需要兩個P操作,則f應該填P(S4)和P(S5)。
例:進程 P1、P2 、P3、P4 和 P5 的前趨圖如下所示
若用 PV 操作控制進程 P1、P2、P3、P4 和 P5 並發執行的過程,需要設置 5 個信號量 S1、S2、S3、S4 和 S5,且信號量 S1~S5 的初值都等於零。如下的進程執行圖中 a 和 b 處應分別填寫(26);c 和 d 處應分別填寫(27) ;e 和 f 處應分別填寫(28)。
(26)A.V (S1)和 P(S2)V(S3) B.P(S1)和 V(S2)V(S3)
C.V(S1)和 V(S2)V(S3) D.P(S1)和 P(S2)V(S3)
(27)A.P(S2)和 P(S4) B.V(S2)和 P(S4) C.P(S2)和 V(S4) D.V(S2)和 V(S4)
(28)A.P(S4)和 V(S5) B.V(S5)和 P(S4) C.V(S4)和 P(S5) D.V(S4)和 V(S5)
解:
26空中,ab,填的值根據p2來決定。執行p2之前需要吧p1的釋放掉,所以a天p(s1)。p2結束后要生成空間給p3和p4.所以b天v(s2)v(s3),選B。
27空中,cd,填的值根據p3來決定。執行p3之前需要把p2的值s2釋放掉,且生成空間給p4。所以c是p(s2),d填寫v(s4)。選C。
28孔中,ef,填的值根據p4來決定。執行p4之前需要把p4的值釋放掉,並且生成空間給p5。所以e是p(s4),f填寫v(s5)。選A