进程同步的5种机制
(1)信號量機制
一個信號量只能置一次初值,以后只能對之進行p操作或v操作。?由此也可以看到,信號量機制必須有公共內存,不能用于分布式操作系統,這是它最大的弱點。?
(2)自旋鎖
?旋鎖是為了保護共享資源提出的一種鎖機制。?調用者申請的資源如果被占用,即自旋鎖被已經被別的執行單元保持,則調用者一直循環在那里看是否該自旋鎖的保持著已經釋放了鎖,自旋鎖是一種比較低級的保護數據結構和代碼片段的原始方式,可能會引起以下兩個問題;?
(1)死鎖?
(2)過多地占用CPU資源?
(3)管程
信號量機制功能強大,但使用時對信號量的操作分散,而且難以控制,讀寫和維護都很困難。因此后來又提出了一種集中式同步進程——管程。其基本思想是將共享變量和對它們的操作集中在一個模塊中,操作系統或并發程序就由這樣的模塊構成。這樣模塊之間聯系清晰,便于維護和修改,易于保證正確性。?
(4)會合
?進程直接進行相互作用?
(5)分布式系統
?由于在分布式操作系統中沒有公共內存,因此參數全為值參,而且不可為指針。
優缺點:?
(1)信號量(Semaphore)及PV操作
?優:PV操作能夠實現對臨界區的管理要求;實現簡單;允許使用它的代碼休眠,持有鎖的時間可相對較長。?
缺:信號量機制必須有公共內存,不能用于分布式操作系統,這是它最大的弱點。信號量機制功能強大,但使用時對信號量的操作分散,而且難以控制,讀寫和維護都很困難。加重了程序員的編碼負擔;核心操作P-V分散在各用戶程序的代碼中,不易控制和管理;一旦錯誤,后果嚴重,且不易發現和糾正。?
(2)自旋鎖
優:旋鎖是為了保護共享資源提出的一種鎖機制; 調用者申請的資源如果被占用,即自旋鎖已經被別的執行單元保持,則調用者一直循環在那里看是否該自旋鎖的保持者已經釋放了鎖; 低開銷;安全和高效;?
缺:自旋鎖是一種比較低級的保護數據結構和代碼片段的原始方式,可能會引起以下兩個問題;?
(1)死鎖?
(2)過多地占用CPU資源?
傳統自旋鎖由于無序競爭會導致“公平性”問題?
(3)管程
?優: 集中式同步進程——管程。其基本思想是將共享變量和對它們的操作集中在一個模塊中,操作系統或并發程序就由這樣的模塊構成。這樣模塊之間聯系清晰,便于維護和修改,易于保證正確性。?
缺:如果一個分布式系統具有多個CPU,并且每個CPU擁有自己的私有內存,它們通過一個局域網相連,那么這些原語將失效。而管程在少數幾種編程語言之外又無法使用,并且,這些原語均未提供機器間的信息交換方法。?
(4)會合
?進程直接進行相互作用
(5)分布式系統
消息和rpc ,由于在分布式操作系統中沒有公共內存,因此參數全為值參,?而且不可為指針.
總結
- 上一篇: C语言:关键字volatile详解!
- 下一篇: TCP/IP 建立连接的过程