1. 程式人生 > >作業系統 第三章 4 死鎖

作業系統 第三章 4 死鎖

1、死鎖(Deadlock):

指多個程序在執行過程中,因爭奪資源而造成的一種僵局。當程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。

死鎖 : 指程序之間無休止地互相等待!

飢餓 :指一個程序無休止地等待!

2、產生死鎖的原因

  1. 競爭資源
  2. 程序間推進順序非法

3、產生死鎖的必要條件  (四個條件都具備就會死鎖,缺一就不會死鎖)

  1. 互斥條件
  2. 請求和保持條件
  3. 不剝奪條件
  4. 環路等待條件

4、處理死鎖的基本方法:

1)事先預防:預防死鎖、避免死鎖

2)事後處理: 檢測死鎖、解除死鎖

5、預防死鎖的方法:

  • 摒棄“請求和保持”條件
  • 摒棄“不剝奪”條件: 允許程序先執行,但當提出的新要求不被滿足時必須釋放它已保持的所有資源,待以後需要時再重新申請。
  • 摒棄“環路等待”條件

6、避免死鎖:

只要使系統始終處於安全狀態,便可避免發生死鎖。

 安全狀態:系統能按某種程序順序為每個程序分配所需資源,直至滿足每個程序對資源的最大需求,並能順利完成。

不安全狀態:系統無法找到一種使多個程序能夠順利分配資源執行完的安全序列

不是所有的不安全狀態都是死鎖狀態

7、死鎖處理方法比較: