- 死锁
多个进程由于互相等待对方持有的资源而造成的谁都无法执行的情况就是死锁 - 死锁的产生原因
资源的互斥使用,一旦占有别人无法使用
进程占有了一些资源,又不释放,再去申请其他资源
总结:几个进程各自占有的资源和互相申请的资源形成了环路等待
死锁的4个必要条件
死锁处理
1. 死锁预防
2. 死锁避免
每次都判断此次请求是否会引起死锁
- 怎么找出安全序列呢?
银行家算法
复杂度Tn=O(mn^2) m是资源数,n是进程数,可以看出,这样代价非常大,因为每次申请都得执行很长时间
调用银行家算法预测是否会发生死锁:
下图,p0申请(0,2,0),假设分配给它,发现分配之后其他进程一个都无法执行了,说明会产生死锁,就不能分配给它,拒绝此次申请
3. 死锁检测+恢复
但是进程的回滚又很难,比如下面的