1. 程式人生 > >【操作系統】死鎖的理解

【操作系統】死鎖的理解

use 系統 pad clas 自己 web lazy 銀行家算法 pkg

【操作系統】死鎖的理解

2017-05-08 若愚

今天分享給大家操作系統中死鎖的相關概念和解決辦法,內容來自與自己當時做的筆記和網絡~有問題可以後臺回復,會盡量回答哦

一、死鎖的概念

當兩個以上的運算單元,雙方都在等待對方停止運行,以獲取系統資源,但是沒有一方提前退出時,就稱為死鎖。

在操作系統中,死鎖指的是在多任務的系統中,一個或者多個進程因為請求系統的資源而暫停,而該資源又被其他進程或者自己占用,這樣形成的僵持的狀態就是死鎖。

比如,進程A占有打印機資源,請求音響資源,進程B占用音響但是請求打印機資源。這樣在沒有外力的作用下將導致死鎖狀態。

技術分享

二、死鎖產生的條件

  1. 禁止搶占:no preemption:一個進程占有某種資源不能被強行剝奪,只能自己放棄該資源;

  2. 持有和等待:hold and wait:進程占有某種資源同時請求別的資源;

  3. 互斥:mutual exclusion :一種資源同時只能被一個進程使用;

  4. 循環等待:circular waiting:形成一個等待的回路;

要想產生死鎖,四種條件缺一不可。

三、死鎖的三種處理策略

  1. 死鎖的預防:通過設定一些限制條件,破壞“禁止搶占”、破壞“持有等待”、破壞“資源互斥”和破壞“循環等待”四個死鎖產生條件之一;

  2. 死鎖的避免:資源的動態分配中,采用某種策略防止系統進入死鎖狀態,比如銀行家算法

    ,銀行家算法其實不需要書上的公式那麽麻煩,理解了其實很簡單,次下次單獨講一次銀行家算法;

  3. 死鎖的檢測和解除:分配資源時候不采取任何措施,而是在死鎖產生之後再進行解決,這裏一個概念就是資源分配圖,比如:

    技術分享

    這就是死鎖的檢測方法之一,圖中 的狀態明顯不是一個死鎖狀態。

四、死鎖和不安全狀態的關系

安全狀態:指系統能按某種順序如<P1,P2,...,Pn>(稱<P1,P2,...Pn>序列為安全序列),來為每個進程分配其所需資源,直到最大需求,使每個進程都可順序完成。若系統不存在這樣一個安全序列,則稱系統處於不安全狀態。

並非所有的不安全狀態都是死鎖狀態,只是系統進入了不安全狀態之後有可能進入死鎖狀態,只要系統處於安全狀態就可避免進入死鎖狀態。

技術分享

喜歡就關註哦~

技術分享

【操作系統】死鎖的理解