2.11進程同步和互斥及其實現方法

一,什麼是進程同步:

併發性帶來了異步性,有時需要進程同步來解決這種異步問題,

進程同步:指的是進程需要有先後順地完成工作推進,當進程之間需要相互配合完成工作時

 

二,什麼是進程互斥:

1,臨界資源:我們把一個時間段只允許一個進程使用的資源叫臨界資源。許多的物理設備(攝像頭,打印機)屬於臨界資源,此外許多的變量,數據,內存緩衝區都屬於臨界資源

2,進程互斥:對臨界資源的訪問,需要互斥的進行,同一段時間內只允許一個進程訪問該資源

3,實現互斥代碼的四個部分:

1)進入區:檢查是否可以進入臨界區,如果可以進入,就對其上鎖,不讓別的進程進入

2)臨界區:訪問和使用臨界資源

3)退出區:負責解開臨界資源的鎖

4)剩餘區:其餘代碼部分

4,進程互斥需要遵循的原則:

1)空閒讓進:臨界區空閒時,應該運行一個進程訪問

2)忙則等待:臨界資源正在被訪問時,其它試圖訪問臨界資源的進程需要等待

3)有限等待:要在有限時間內進入臨界區,保證不會飢餓

4)讓權等待:進不了臨界區的進程,需要釋放處理機,防止忙等

 

三,進程互斥的軟件實現方法:

1,單標誌法

1)在進入區只檢查,不上鎖

2)在退出區把臨界資源的使用權交給另一個進程

3)主要問題:不遵循空閒讓進原則

 

 

2,雙標誌先檢查

1)在進入區先檢查後上鎖,退出區解鎖

2)主要問題:不遵循忙則等待原則

 

 

3,雙標誌後檢查

1)在進入區先

上鎖後檢查,退出區解鎖

2)主要問題:不遵循空閒讓進,有限等待原則,可能導致飢餓

 

 

4,Peterson算法

1)在進入區主動爭取——》主動謙讓——》檢查對方是否想進,己方是否謙讓

2)主要問題:不遵循讓則等待原則,會發送忙等

 

 

 

四,進程互斥的硬件實現方法:

1,中斷屏蔽方法

實現:利用開/關中斷指令實現,與源語的實現思想相同,即某個進程開始訪問臨界區到結束爲止都不允許被中斷,也就不能發送進程切換,因此也就不可能發生兩個同時訪問臨界區的情況

優點:簡單,高效

缺點:不適於多處理機,只適用於操作系統內核進程,不適用於用戶進程(因爲開/關中斷指令只能運行在內核態,這組指令如果讓用戶隨意使用很危險)

2,TestAndSet指令:

 

 

3,swap指令:

 

 

 

 

 

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