死锁详解

image_ee173cf0.png

什么是死锁?

image_973321be.png
image_e8b26d0e.png

死锁、饥饿、死循环的区别

image_0af17eea.png
image_3575e341.png

死锁产生的四个必要条件

image_99e1d0b4.png

什么时候会发生死锁?

image_8ebfbd00.png

死锁的处理策略

image_b1f43a1d.png

预防死锁

破坏互斥条件

image_4494291e.png

破坏不可剥夺条件

image_21329f79.png

破坏请求和保持条件

image_35a25dff.png

破坏循环等待条件

image_7fd7220f.png

避免死锁

什么是安全序列?

  • 所谓安全序列
    image_422de8a4.png
    image_13337e45.png
    image_da92dce2.png
    image_7700c353.png
    image_501e1f09.png

安全序列、安全状态、不安全状态、死锁之间的联系

image_c01f3a00.png
image_b144dc9c.png

避免系统进入不安全状态------银行家算法

image_e8bd0252.png
image_5bb2afff.png
image_44afd4d7.png
image_41fa3ac8.png
image_177263b9.png
image_1b67598d.png
image_b9ec0e24.png
image_24cb5d12.png

  • 使用代码实现
    image_a1667381.png
    image_adb36c1e.png
    image_88d745ee.png

死锁的检测和解除

image_6e16a060.png

死锁的检测

image_1e548bf4.png

  • 举个例子,可以消除所有边,即无死锁发生
    image_97d17581.png
    image_91c33e56.png
    image_07b51c6e.png
  • 举个例子,不可消除所有边,即产生死锁
    image_19f1bd24.png
    image_0e5b0f38.png
    image_e5865ad1.png
    image_c3460d33.png

死锁的解除

image_764d2108.png