1 死锁,饥饿,死循环的区别
死锁的定义:多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程多无法向前推进
2 死锁产生的必要条件
- 互斥条件
- 不剥夺条件
- 请求并保持条件
- 循环等待条件
循环等待条件不是充要条件的原因是:即使循环等待,但其中一个可能需要的资源可以来自链里,也可以来自链外,此时如果链外的那个资源释放了,就不用等待了,但是死锁的时候,一定在循环等待
3 死锁产生的原因
-
系统资源的竞争:只有对不可剥夺的资源竞争才会产生死锁
-
进程推进顺序非法:请求和释放资源的顺序不当,P1,P2分别保持R1,R2,P1申请R2,P2申请R1
-
信号量使用不当:进程间彼此互等对方发来消息
总之对不可剥夺的资源分配不合理时就会导致死锁
4 死锁的处理策略
-
死锁预防
-
避免死锁
-
死锁的检测和解除
注:前两种不会产生死锁,后一种是死锁产生后的解决