【操作系統】死鎖的理解
【操作系統】死鎖的理解
今天分享給大家操作系統中死鎖的相關概念和解決辦法,內容來自與自己當時做的筆記和網絡~有問題可以後臺回復,會盡量回答哦
一、死鎖的概念
當兩個以上的運算單元,雙方都在等待對方停止運行,以獲取系統資源,但是沒有一方提前退出時,就稱為死鎖。
在操作系統中,死鎖指的是在多任務的系統中,一個或者多個進程因為請求系統的資源而暫停,而該資源又被其他進程或者自己占用,這樣形成的僵持的狀態就是死鎖。
比如,進程A占有打印機資源,請求音響資源,進程B占用音響但是請求打印機資源。這樣在沒有外力的作用下將導致死鎖狀態。
二、死鎖產生的條件
-
禁止搶占:no preemption:一個進程占有某種資源不能被強行剝奪,只能自己放棄該資源;
-
持有和等待:hold and wait:進程占有某種資源同時請求別的資源;
-
互斥:mutual exclusion :一種資源同時只能被一個進程使用;
-
循環等待:circular waiting:形成一個等待的回路;
要想產生死鎖,四種條件缺一不可。
三、死鎖的三種處理策略
-
死鎖的預防:通過設定一些限制條件,破壞“禁止搶占”、破壞“持有等待”、破壞“資源互斥”和破壞“循環等待”四個死鎖產生條件之一;
-
死鎖的避免:資源的動態分配中,采用某種策略防止系統進入死鎖狀態,比如銀行家算法
-
死鎖的檢測和解除:分配資源時候不采取任何措施,而是在死鎖產生之後再進行解決,這裏一個概念就是資源分配圖,比如:
這就是死鎖的檢測方法之一,圖中 的狀態明顯不是一個死鎖狀態。
四、死鎖和不安全狀態的關系
安全狀態:指系統能按某種順序如<P1,P2,...,Pn>(稱<P1,P2,...Pn>序列為安全序列),來為每個進程分配其所需資源,直到最大需求,使每個進程都可順序完成。若系統不存在這樣一個安全序列,則稱系統處於不安全狀態。
並非所有的不安全狀態都是死鎖狀態,只是系統進入了不安全狀態之後有可能進入死鎖狀態,只要系統處於安全狀態就可避免進入死鎖狀態。
喜歡就關註哦~
【操作系統】死鎖的理解