一,什麼是進程同步:
併發性帶來了異步性,有時需要進程同步來解決這種異步問題,
進程同步:指的是進程需要有先後順地完成工作推進,當進程之間需要相互配合完成工作時
二,什麼是進程互斥:
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指令: