立即學習:https://edu.csdn.net/course/play/7883/161187?utm_source=blogtoedu
3.2 處理機管理(進程管理)
二.進程互斥關與同步
1.進程間兩種形式的制約關係
(1) 間接相互制約關係---源於資源共享
(2) 直接相互制約關係---源於進程合作
2.臨界資源
- 臨界資源(Critical Resource):把一段時間內只允許一個進程訪問的資源稱爲臨界資源或獨佔資源(特點:一定要互斥訪問)
- 臨界區(Critical Section):每個進程中訪問臨界資源的那段代碼稱爲臨界區
保證進程不同時進入臨界區,就能保證進程互斥的訪問臨界資源.
三.信號量機制
- 信號量是OS提供的管理公有資源的有效手段.
- 信號量是一個整數,當信號量大於等於零時,代表可供併發進程使用的資源數量,當信號量小於零時,表示處於阻塞態進程的個數.
Wait 操作: (P操作)
- 申請資源,減量操作,S.value:=S.value-1
- 當S.value<0時,表示資源分配完,進行自我阻塞.
Signal操作:(V操作)
- 釋放資源,增量操作,S.value=S.value+1
- 當S.value<=0,喚醒S.L鏈表中的等待進程.
四.信號量的應用
比如:打印機
- 利用信號量實現進程互斥(模式)(第二容易考到)
- 利用信號量實現前驅關係(模式)(軟設第一容易考到)
- 利用記錄型信號量實現同步(模式)(第三容易考到)
1.利用信號量實現進程互斥(模式)
爲使多個進程互斥的訪問某臨界資源,須爲該資源設置一互斥信號量mutex,並設其初始值爲1,然後將各進程訪問資源的臨界區CS置於wait(mutex)和signal(mutex)之間即可.
wait和signal一定是成對出現的
注意:實現互斥資源的,初值一定是互斥資源的個數.
2.利用信號量實現前驅關係(模式)(歷年上午考試經常考到)
設有兩個併發執行的進程P1和P2,P1中有語句S1,P2有語句S2,希望在S1執行後再執行S2.
使進程P1和P2共享一個公用信號量S,並賦予其初值爲0.
注意:實現前驅關係的,初值一定是0.有幾個有向邊就設幾個信號量.
3.利用記錄型信號量實現同步(模式)
P1,p2兩進程因合作完成一項任務而共用一個變量x.
進程p2將處理結果送入x;進程P1將x的結果打印.