1. 死锁原理
- 死锁是一组进程,在互相竞争资源或者互相通信时,发生的永久性阻塞。每个进程都占用某个资源,并且在等待另一个资源。
- 死锁的条件:
- 互斥:一次只有一个进程能够占有一个资源。
- 占有且等待:在等待资源时,继续占有资源。
- 不可抢占:不能抢占其他进程以持有的资源。
- 循环等待:存在闭合的进程链。每个进程至少占有下一个进程的所需资源。
2. 死锁预防
- 破坏四个条件之一,则死锁无法出现。
- 互斥:无法破坏。
- 占有且等待:一次性申请所有资源。
- 不可抢占:变为可抢占资源。
- 循环等待:给资源排序,只能按照一个顺序申请资源,则不会形成环。
3. 死锁避免:
- 进程启动拒绝算法:若一个进程的请求会产生死锁,则不启动改进程。事先要知道每个进程需要的资源及个数,如果一个进程需要比剩下的资源更多的资源时,则拒绝启动。
- 资源分配拒绝——银行家算法:若一个进程增加的资源请求会导致死锁,则不允许这个资源分配。他是预测死锁的可能性以确保不出现死锁。即资源分配之后,剩余的资源总数要能够使得某一个进程完全运行结束。这是安全状态。
- 死锁避免比死锁预防限制较小&#x