操作系統(tǒng)死鎖的必要條件
操作系統(tǒng)中死鎖產(chǎn)生是需要條件的,這幾個條件缺一不可,是必要條件。下面由學習啦小編為大家整理了操作系統(tǒng)的死鎖產(chǎn)生的必要條件相關知識,希望對大家有幫助!
一、操作系統(tǒng)死鎖產(chǎn)生的必要條件
產(chǎn)生死鎖的四個必要條件
-----互斥條件:一個資源每次只能被一個進程(線程)使用。
-----不可剝奪條件:一個進程(線程)對已獲得的資源在未使用完畢之前,不能被其他進程強行剝奪,而只能又該進程自愿釋放。
-----請求保持條件條件: 進程(線程)每次申請它所需要的一部分資源,在申請新資源的同時繼續(xù)占用已分配的資源。
-----循壞等待條件: 多個進程(線程)之間形成一種頭尾相接的循環(huán)等待資源關系,即前一個進程占有后一個進程所請求的資源。
注:這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之 一不滿足,就不會發(fā)生死鎖。
二、參考:解決死鎖的方法
-----預防死鎖(破壞產(chǎn)生死鎖的條件)
-----避免死鎖(銀行家算法)
-----檢測死鎖(資源分配圖)
-----解除死鎖
注:第三條與第四條一般聯(lián)合使用
預防死鎖的策略
-----破壞互斥條件(SPOOLing)
----- 允許剝奪其他進程的資源(破壞不可剝奪條件)
-----一次性分配所有的資源(破壞請求與保持條件)
-----有序分配資源(破壞請求與保持條件)
檢測死鎖的策略
資源分配圖
解除死鎖的策略
-----撤銷進程
-----撤消陷于死鎖的全部進程
-----逐個撤消陷于死鎖的進程,直到死鎖不存在
-----剝奪資源
-----將陷于死鎖的進程所占用的資源逐個強迫放棄,直至死鎖消失
-----從另外一些進程那里強行剝奪足夠數(shù)量的資源分配給死鎖進程,以解除死鎖狀態(tài)