四、進程的互斥( 綜合應用 )
1、 進程互斥 的含義:進程的互斥是指當有若干進程都要使用某一共享資源時,任何時刻最多只允許一個進程去使用,其他要使用該資源的進程必須等待,直到占用資源者釋放了該資源。 PV操作是兩個過程,由他們兩個來控制一個信號S,假設S是紅燈的個數。
每個進程進入臨界區前都要先執行P操作。退出臨界區時執行V操作。用下面的比喻很容易理解:
臨界區門前有棵樹(S)
用來掛紅燈
進程想進CPU的門
先得上樹取盞燈(調用一次P操作)
取下一個去敲門(S=S-1)
如果樹上沒燈取(S≤0)
樹說欠你一盞燈(S為負時)
沒轍只好外邊排隊等( W ait (S))
得燈進程續運行
運行完了要出門(調用一次V操作)
馬上還回一盞燈(S=S+1)
若有進程在催債(S≤0)
放個進去事完成( R elease (S))
2、實現進程互斥的工具——PV操作。
PV操作 是由兩個操作,即P操作和V操作組成。P操作和V操作是兩個在信號量上進行操作的過程。假定用S表示信號量則把這兩個過程記作P(S)和V(S),它們的定義如下: Procedue P(Var S: Semaphore); begin S:=S-1; if S<0 then W(S) end; {P} Procedue V(Var S: Semaphore); begin S:=S+1; if S<=0 then R(S) end; {V}
為了確保PV操作自身的正確執行,因此P(S)和V(S)操作中不可中斷,這種 不可被中斷的過程稱為“原語 ”。
3、用PV操作管理相關臨界區的一般形式
一個信號量與一組涉及共享變量的相關臨界區聯系起來,信號量的初值定為“1”
任何一個進程要進入臨界區前先調用P操作,執行臨界區的操作后,退出臨界區時調用V操作。
由于信號量的初值為“1”,P操作起到了限制一次只有一個進程進入臨界區的作用,其余進程欲進入臨界區必須符合對臨界區管理的第一個要求,即一次最多讓一個進程在臨界區執行。進程退出后執行V操作,若有進程在等待則釋放一個進程,這樣就達到了對臨界區管理的第二個和第三個要求(即不能無限逗留也不能無限等待)。
4、分析進程互斥問題并用PV操作實現進程互斥。
相關推薦:2010年自考工學類“操作系統原理”復習資料匯總