2.4死锁
死锁预防
死锁检测和解除
死锁避免
概念
处理策略
定义
原因
多个进程因竞争相互等待
一组进程中的每一个进程都在等待仅由该组过程中的其他进程才能引发的事件
进程推进顺序非法,资源使用顺序不当或信号量使用不当
竞争不可剥夺资源
必要条件
不剥夺条件
请求并保持条件
互斥条件
循环等待条件
必然存在一个进程资源的循环等待链
死锁避免
死锁检测及解除
死锁预防
事先预防策略,静态策略
事先预防策略,动态策略
在资源的动态分配过程中,防止系统进入不安全状态
从上至下对死锁的防范程度逐渐减弱,资源利用率提高,进程因资源因素阻塞的频度下降(并发程度提高)
破坏不剥夺条件
破坏请求并保持条件
破坏互斥条件
破坏循环等待条件
不可以,应保持
保持不可剥夺资源的进程请求新资源得不到满足时,必须释放已有资源
复杂,代价大,前一段工作可能失效,信息不连续;
反复申请和释放,饥饿
第一种协议
第二钟协议
运行前申请全部资源,破坏请求;
不满足则不分配,破坏保持
系统资源严重浪费,饥饿
只获得初期运行所有资源
提高利用率,减少饥饿
顺序资源分配法,按编号递增顺序请求资源,再请求低的必须先释放所有高的
编号必须相对稳定,限制新类型设备的增加;
作业使用资源顺序与系统规定不同,造成浪费;
用户编程麻烦;
允许动态申请资源,应先计算此次分配的安全性
无法找到安全序列则不安全
不安全可能死锁,死锁一定不安全
银行家算法Dijkstra
最大需求矩阵Max
分配矩阵Allocation
可用资源向量Available
需求矩阵Need
检测
解除
资源分配图/有向图,请求边、分配边
资源矩阵
死锁定理:当且仅当S状态的资源分配图是不可完全简化的
为了检测必须保存有关资源的请求和分配信息
提供算法检测是否死锁
撤销进程法
进程回退法
资源剥夺法
挂起某些死锁进程,并抢占它的资源
终止所有死锁进程
按一定顺序逐个终止进程
让足够进程回退到足以避免死锁,回退时自动释放资源
需保存进程的历史信息,设置还原点