互斥與同步&生產者消費者問題

進程互斥與同步的基本概念

進程互斥與同步機制的主要任務是,對多個相關進程在執行次序上進行協調,使併發執行的諸進程間能按照一定的規則(或時序)共享系統資源,並能很好的相互合作,從而使程序能夠正確執行。

在多個進程共享資源或爲完成某一任務而相互合作時,可能存在以下兩種形式的制約關係:

(1)間接相互制約關係(互斥)

多個程序併發執行時,要對臨界資源進行共享,所以只能互斥的訪問臨界資源,這些進程間就形成了間接制約關係。

(2)直接相互制約關係(同步)

多個進程間未完成某一共同任務時必須合作進行。比如一個進程用於輸入數據,另一進程用於計算數據,只有輸入進程拿到數據之後,計算進程纔可進行計算,也就是說輸入進程完成後纔可進行計算進程,即輸入進程直接制約着計算進程。

由於上述兩種制約關係的存在,必須對臨界資源的訪問和進程的執行次序進行協調,保證各進程按次序執行,這就是進程的互斥與同步概念。

生產者消費者問題

該問題就是一個著名的進程同步問題。它描述的是:一羣生產者進程正在生產產品,並將這些產品提供給消費者進程去消費。爲使生產者進程和消費者進程能夠併發執行。在兩者之間設置了一個具有n個緩衝區的緩衝池,生產者進程將生產的產品放入緩衝區中,消費者進程從緩衝區中取走產品進行消費。

生產者在投放產品時,消費者不能去取產品。消費者在取產品時,生產者不能投放產品。即對緩衝區必須互斥的使用。

只有生產者往緩衝區中投放了產品,消費者纔可取走消費,而不能在空緩衝區中取走產品。同理,當緩衝區滿了的時候只有消費者進程取走產品後,生產者進程纔可繼續投放產品,而不能對滿了的緩衝區投放產品。所以生產者進程與消費者進程之間必須同步

所以,可以利用信號量實現對臨界資源(緩衝區)的維護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章