同步方式比較

•信號量(Semaphore)及PV操作
優:PV操作能夠實現對臨界區的管理要求;實現簡單;允許使用它的代碼休眠,持有鎖的時間可相對較長。
缺:一個信號量只能置一次初值,以後只能對之進行p操作或v操作。
由此也可以看到,信號量機制必須有公共內存,不能用於分佈式操作系統,這是它最大的弱點。信號量機制功能強大,但使用時對信號量的操作分散,而且難以控制,讀寫和維護都很困難。加重了程序員的編碼負擔;核心操作P-V分散在各用戶程序的代碼中,不易控制和管理;一旦錯誤,後果嚴重,且不易發現和糾正。


自旋鎖:
優:旋鎖是爲了保護共享資源提出的一種鎖機制; 調用者申請的資源如果被佔用,即自旋鎖被已經被別的執行單元保持,則調用者一直循環在那裏看是否該自旋鎖的保持着已經釋放了鎖; 低開銷;安全和高效;
缺:自旋鎖是一種比較低級的保護數據結構和代碼片段的原始方式,可能會引起以下兩個問題;
(1)死鎖
(2)過多地佔用CPU資源
傳統自旋鎖由於無序競爭會導致“公平性”問題


管程:【再細看】
優: 集中式同步進程——管程。其基本思想是將共享變量和對它們的操作集中在一個模塊中,操作系統或併發程序就由這樣的模塊構成。這樣模塊之間聯繫清晰,便於維護和修改,易於保證正確性。
缺:如果一個分佈式系統具有多個CPU,並且每個CPU擁有自己的私有內存,它們通過一個局域網相連,那麼這些原語將失效。而管程在少數幾種編程語言之外又無法使用,並且,這些原語均未提供機器間的信息交換方法。


會合:
進程直接進行相互作用


分佈式系統:
消息和rpc
由於在分佈式操作系統中沒有公共內存,因此參數全爲值參,  
而且不可爲指針。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章