操作系统之死锁
一、 死锁的概念
1. 什么是死锁
2. 进程死锁、饥饿、死循环的区别
3. 死锁产生的必要条件
4. 什么时候会发生死锁
5. 死锁的处理策略
6. 总结
二、死锁的处理策略—预防死锁
1. 破坏互斥条件
2. 破坏不可剥夺条件
3. 破坏请求和保持条件
4. 破坏循环等待条件
5. 总结
三、死锁的处理策略—避免死锁
1. 什么是安全序列
简而言之,能够保证程序正常运行下去的一种资源分配策略(顺序)就是安全序列
- 不安全的策略
- 安全的策略
2. 什么是系统的不安全状态,与死锁有何联系
3. 如何避免系统进入不安全状态—银行家算法
- 可以得到安全序列的情况
- 不可以得到安全序列的情况
- 银行家算法代码实现
4. 总结
四、死锁的处理策略—检测和解除
1. 死锁的检测
- 不会发生死锁的案例
1.R1分配给P1进程2个资源,分配给P2进程1个资源,目前R1没有空闲资源;R2分配给P2进程1个资源,R1剩余1个空闲资源;此时P1向R1申请1个资源,成功!执行完成,释放所有资源。但是P2向R1申请资源失败!因为R1没有空闲资源了。
2.目前R1向P2进程分配1个资源,剩余2个空闲资源;R2向P2进程分配1个资源,剩余1个空闲资源;此时,P2向R1申请1个资源,成功!进程P2执行完成释放所有资源。
- 会发生死锁的案例
1.P3进程正常执行完成!
2.P3释放所有资源后,仍然不能满足P1和P2的所需资源
- 总结死锁检查方法