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