操作系统之死锁

操作系统之死锁

    • 一、 死锁的概念
      • 1. 什么是死锁
      • 2. 进程死锁、饥饿、死循环的区别
      • 3. 死锁产生的必要条件
      • 4. 什么时候会发生死锁
      • 5. 死锁的处理策略
      • 6. 总结
    • 二、死锁的处理策略—预防死锁
      • 1. 破坏互斥条件
      • 2. 破坏不可剥夺条件
      • 3. 破坏请求和保持条件
      • 4. 破坏循环等待条件
      • 5. 总结
    • 三、死锁的处理策略—避免死锁
      • 1. 什么是安全序列
      • 2. 什么是系统的不安全状态,与死锁有何联系
      • 3. 如何避免系统进入不安全状态—银行家算法
      • 4. 总结
    • 四、死锁的处理策略—检测和解除
      • 1. 死锁的检测
      • 2. 死锁的解除
      • 3. 总结

一、 死锁的概念

1. 什么是死锁

操作系统之死锁_第1张图片

2. 进程死锁、饥饿、死循环的区别

操作系统之死锁_第2张图片

3. 死锁产生的必要条件

操作系统之死锁_第3张图片

4. 什么时候会发生死锁

操作系统之死锁_第4张图片

5. 死锁的处理策略

操作系统之死锁_第5张图片

6. 总结

操作系统之死锁_第6张图片

二、死锁的处理策略—预防死锁

操作系统之死锁_第7张图片

1. 破坏互斥条件

操作系统之死锁_第8张图片

2. 破坏不可剥夺条件

操作系统之死锁_第9张图片

3. 破坏请求和保持条件

操作系统之死锁_第10张图片

4. 破坏循环等待条件

操作系统之死锁_第11张图片

5. 总结

操作系统之死锁_第12张图片

三、死锁的处理策略—避免死锁

操作系统之死锁_第13张图片

1. 什么是安全序列

简而言之,能够保证程序正常运行下去的一种资源分配策略(顺序)就是安全序列

  • 不安全的策略
    操作系统之死锁_第14张图片
    操作系统之死锁_第15张图片
  • 安全的策略
    操作系统之死锁_第16张图片
    操作系统之死锁_第17张图片
    操作系统之死锁_第18张图片

2. 什么是系统的不安全状态,与死锁有何联系

操作系统之死锁_第19张图片

3. 如何避免系统进入不安全状态—银行家算法

  • 可以得到安全序列的情况
    操作系统之死锁_第20张图片
    操作系统之死锁_第21张图片
    操作系统之死锁_第22张图片
    操作系统之死锁_第23张图片
    操作系统之死锁_第24张图片
  • 不可以得到安全序列的情况
    操作系统之死锁_第25张图片
    操作系统之死锁_第26张图片
  • 银行家算法代码实现
    操作系统之死锁_第27张图片
    操作系统之死锁_第28张图片

4. 总结

操作系统之死锁_第29张图片

四、死锁的处理策略—检测和解除

操作系统之死锁_第30张图片

1. 死锁的检测

操作系统之死锁_第31张图片

  • 不会发生死锁的案例
    1.R1分配给P1进程2个资源,分配给P2进程1个资源,目前R1没有空闲资源;R2分配给P2进程1个资源,R1剩余1个空闲资源;此时P1向R1申请1个资源,成功!执行完成,释放所有资源。但是P2向R1申请资源失败!因为R1没有空闲资源了。
    操作系统之死锁_第32张图片
    2.目前R1向P2进程分配1个资源,剩余2个空闲资源;R2向P2进程分配1个资源,剩余1个空闲资源;此时,P2向R1申请1个资源,成功!进程P2执行完成释放所有资源。
    操作系统之死锁_第33张图片
    操作系统之死锁_第34张图片
    操作系统之死锁_第35张图片
  • 会发生死锁的案例
    1.P3进程正常执行完成!
    操作系统之死锁_第36张图片
    2.P3释放所有资源后,仍然不能满足P1和P2的所需资源
    操作系统之死锁_第37张图片
    操作系统之死锁_第38张图片
  • 总结死锁检查方法
    操作系统之死锁_第39张图片
    操作系统之死锁_第40张图片

2. 死锁的解除

操作系统之死锁_第41张图片

3. 总结

操作系统之死锁_第42张图片

你可能感兴趣的:(操作系统,操作系统,死锁,死锁处理策略,安全序列,银行家算法)