備戰(zhàn)軟考的日子其實(shí)一點(diǎn)也不輕松,而且還經(jīng)常遇到一些小小的困難,PV操作不僅僅是我們軟考的一個(gè)難點(diǎn),而且還是一個(gè)常考點(diǎn),它會(huì)出現(xiàn)在軟考的很多科目中,讓我們抖擻抖擻精神來看看它到底是何方神圣,一起揭開它神秘的面紗。
1.PV操作的相關(guān)概念
| 臨界資源
雖然多個(gè)進(jìn)程可以共享系統(tǒng)中的各種資源,但其中許多資源一次只能為一個(gè)進(jìn)程所使用,我們把一次僅允許一個(gè)進(jìn)程使用的資源稱為臨界資源。許多物理設(shè)備都屬于臨界資源,如打印機(jī)等。此外,還有許多變量、數(shù)據(jù)等都可以被若干進(jìn)程共享,也屬于臨界資源。
| 臨界區(qū)
對(duì)臨界資源的訪問,必須互斥地進(jìn)行,在每個(gè)進(jìn)程中,訪問臨界資源的那段代碼稱為臨界區(qū)。
| 信號(hào)量機(jī)制
信號(hào)量的數(shù)據(jù)結(jié)構(gòu)為一個(gè)值和一個(gè)指針,指針指向等待該信號(hào)量的下一個(gè)進(jìn)程。信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)。
| 信號(hào)量的物理含義
S>0 表示有S個(gè)資源可用
S=0 表示無資源可用
S<0 則 |S| 表示S等待隊(duì)列中的進(jìn)程個(gè)數(shù)
| PV操作
用于處理進(jìn)程互斥問題,協(xié)調(diào)資源的作用。
P操作,代表需要、申請(qǐng)、鎖定、占用資源。信號(hào)量 S - 1;
如果減 1 后大于等于 0,即 S - 1 >= 0,即 S >= 1 ,則往下執(zhí)行,
有些題目里,如果進(jìn)程需要開啟,那信號(hào)量往往就要滿足這個(gè)條件,起碼要 S = 1。
V操作,代表釋放資源,信號(hào)量 S + 1;
如果加 1 后大于 0,即 S + 1 > 0 ,則往下執(zhí)行
V操作之后,信號(hào)量如果還是為零甚至為負(fù),說明資源釋放得還不夠,程序還要繼續(xù)進(jìn)行釋放,不能進(jìn)行下一步。
| 總結(jié):
P操作,占用資源,滿足條件就結(jié)束本操作,流向下一步,否則掛起,等待資源的到來;
V操作,釋放資源,滿足條件就結(jié)束本操作,流向下一步,否則等待釋放更多的資源;
P(S):
①將信號(hào)量S的值減1,即S=S-1;
②如果S>=0,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài),排入等待隊(duì)列。
V(S):
③將信號(hào)量S的值加1,即S=S+1;
④如果S>0,則該進(jìn)程繼續(xù)執(zhí)行;否則釋放隊(duì)列中第一個(gè)等待信號(hào)量的進(jìn)程。
P、V操作必須成對(duì)出現(xiàn),有一個(gè)P操作就一定有一個(gè)V操作
2. PV操作圖解
3. 真題小練
進(jìn)程P1、P2、P3、P4和P5的前趨圖如下圖所示:
若用PV操作控制進(jìn)程P1、P2、P3、P4和P5的并發(fā)執(zhí)行過程,則需要設(shè)置5個(gè)信號(hào)量S1、S2、S3、S4和S5,且信號(hào)量S1~S5的初值都等于零。下圖中a和b處應(yīng)分別填入___;c和d處應(yīng)分別填入___;e和f處應(yīng)分別填入___。
解答:
根據(jù)前趨圖,P1進(jìn)程執(zhí)行完需要通知P2和P3進(jìn)程,所以需要利用V(S1)和V(S2)操作通知P2和P3進(jìn)程,所以空a應(yīng)該填V(S1)和V(S2),P2進(jìn)程執(zhí)行完要通知P4進(jìn)程,所以空b應(yīng)該填V(S3)。
P3進(jìn)程運(yùn)行前需要等待P1進(jìn)程的結(jié)果,所以執(zhí)行程序前要先利用1個(gè)P操作,所以空c應(yīng)該填P(S2),而P3進(jìn)程運(yùn)行結(jié)束需要利用一個(gè)V操作通知P5進(jìn)程,所以空d應(yīng)該填V(S4)。
P4進(jìn)程執(zhí)行結(jié)束需要利用一個(gè)V操作通知P5進(jìn)程,所以空e應(yīng)該填V(S5),P5進(jìn)程執(zhí)行前需要等待P3和P4進(jìn)程的結(jié)果,所以空f處需要兩個(gè)P操作,則f應(yīng)該填P(S4)和P(S5)。