死锁概念部分

1 死锁,饥饿,死循环的区别

死锁的定义:多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程多无法向前推进

0CFrmq.png

2 死锁产生的必要条件

  1. 互斥条件
  2. 不剥夺条件
  3. 请求并保持条件
  4. 循环等待条件

循环等待条件不是充要条件的原因是:即使循环等待,但其中一个可能需要的资源可以来自链里,也可以来自链外,此时如果链外的那个资源释放了,就不用等待了,但是死锁的时候,一定在循环等待

3 死锁产生的原因

  1. 系统资源的竞争:只有对不可剥夺的资源竞争才会产生死锁

  2. 进程推进顺序非法:请求和释放资源的顺序不当,P1,P2分别保持R1,R2,P1申请R2,P2申请R1

  3. 信号量使用不当:进程间彼此互等对方发来消息

    总之对不可剥夺的资源分配不合理时就会导致死锁

4 死锁的处理策略

  1. 死锁预防

  2. 避免死锁

  3. 死锁的检测和解除

    注:前两种不会产生死锁,后一种是死锁产生后的解决

5 总结

wzXPV1.png