死锁以及如何避免死锁
死锁以及如何避免死锁
- 死锁的定义
- 死锁通常涉及的四个必要条件
- 互斥条件
- 占有且等待条件
- 非抢占条件
- 循环等待条件
- 死锁预防策略
- 破坏互斥条件
- 破坏占有且等待条件
- 破坏非抢占条件
- 破坏循环等待条件
- 死锁避免方法
- 死锁检测与恢复
死锁的定义
死锁是指在多个进程或线程之间,彼此持有对方需要的资源,导致它们都无法继续执行的情况。
死锁通常涉及的四个必要条件
1. 互斥条件
一个资源每次只能被一个进程使用。
2. 占有且等待条件
一个进程在持有至少一个资源的同时还可以请求其他资源。
3. 非抢占条件
资源不能被强制从一个进程中取走,只能由持有它的进程自愿释放。
4. 循环等待条件
一组进程之间形成一个循环,每个进程都在等待下一个进程所占有的资源。
死锁预防策略
1. 破坏互斥条件
允许多个进程共享某些资源,而不是互斥地独占。
2. 破坏占有且等待条件
要求一个进程在申请资源时不持有其他资源,或者在等待时释放已经占有的资源。一次性申请所有的资源。
3. 破坏非抢占条件
可以强制抢占某些资源,使其立即释放。
4. 破坏循环等待条件
可以通过对资源进行全局编号,并要求进程按顺序申请资源,从而破坏循环等待。
死锁避免方法
通过在分配资源时进行安全性检查,避免系统进入可能导致死锁的状态。
死锁检测与恢复
允许系统进入死锁状态,但会定期地检测死锁,并采取措施解除死锁。
还没有评论,来说两句吧...