進程同步
1、互斥訪問的過程和原則
一、前提
- 進程是併發執行的,進程間存在着相互制約關係
- 併發的進程對系統共享資源進行競爭
- 進程通訊,過程當中相互發送的信號稱爲消息或事件
二、兩種相互制約形式
- 間接相互制約關係(互斥) :進程排他性地訪問共享資源
- 直接相互制約關係(同步) :進程間的合做,好比管道通訊
三、訪問過程
- 進入區:嘗試進入臨界區,成功則加鎖(lock)
- 臨界區:訪問共享資源
- 退出區:解鎖(unlock) ,喚醒其它阻塞進程
- 剩餘區:其它代碼
四、訪問原則
- 空閒讓進:臨界區空閒,容許一個進程進入
- 忙則等待:臨界區已有進程,其它進程等待(阻塞狀態)
- 有限等待:處於等待的進程,等待時間有限
- 讓權等待:等待時應讓出CPU執行權,防止「忙等待」
2、互斥的軟件實現方法
一、軟件實現方法
- 皮特森算法(Peterson's Algorithm)
二、硬件實現方法
-
TSL指令
算法
-
Swap指令
併發
3、信號量機制
一、整型信號量
二、記錄型信號量
4、管程
5、條件變量(條件對象)
歡迎關注本站公眾號,獲取更多信息