1. 程式人生 > >易學筆記-系統分析師考試-第3章 作業系統基本原理/3.2 程序管理/3.2.3 死鎖問題

易學筆記-系統分析師考試-第3章 作業系統基本原理/3.2 程序管理/3.2.3 死鎖問題

  • 死鎖
  1. 概念:兩個程序A與B都需要一個資源a,當程序A佔用資源a時,同時又申請程序B正在佔用的資源b,這時候程序A需要資源b,程序B需要資源a,這樣就進入了一個相互等待狀態,這種狀態成為死鎖
  2. 產生原因
    1. 系統資源不夠
    2. 互斥資源的共享
    3. 併發執行不當
    4. 資源分配不當
  3. 產生死鎖的4個必要條件
    1. 互斥條件:資源在任意時刻只能供一個程序使用
    2. 不可剝奪條件:程序已經佔用的資源,不能被其它程序剝奪
    3. 請求和保持條件:程序在請求其它資源時,不主動釋放現已佔用資源
    4. 環路條件:請求的資源是另外一個程序佔有的資源
  4. 死鎖處理方式
    1. 死鎖預防:
      1. 概念:破壞死鎖的4個必要條件進行預防的,包括:
        1. 破壞互斥條件:這個是系統固有屬性,很難做到這點
        2. 破壞不可剝奪條件:申請新資源的程序如果得不到滿足的情況下釋放現有資源
        3. 破壞請求與保持條件:一次申請所有資源,如果申請得不到滿足,則進入等待狀態,優點是簡單,缺點是造成資源浪費
        4. 破壞環路條件:對資源進行編號,程序按編號申請資源;缺點是:資源要相對穩定,但也會發生程序使用資源的順序和系統規定順序不一樣
      2. 死鎖避免:
        1. 概念:系統對資源進行編號,程序按一定順序申請資源,避免資源發生爭搶,這個時候系統處於安全狀態
        2. 安全序列:按一定順序使用資源的程序
        3. 舉例
  5. 死鎖檢測和解除
    1. 死鎖檢查:通用有向圖
    2. 解除死鎖方法
      1. 資源剝奪法
        1. 掛起死鎖程序,然後搶佔它的資源,讓這些資源分配給其它程序使用
        2. 注意:要防止程序“餓死”,也就是因為程序長時間等不到資源而處於資源匱乏的狀態
      2. 程序撤銷法:撤銷佔有資源多的程序或者撤銷代價較小的程序。撤銷原則是根據程序優先順序和執行代價決定的
      3. 程序回退法:讓程序回退到足以解除死鎖的狀態,回退的同時自願釋放資源。回退的時候程序儲存歷史資訊。