导图社区 死锁预防
死锁预防通过对条件的严格限制,破坏产生死锁的四个必要条件。本图知识梳理清楚,非常实用,值得收藏。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
死锁预防
主要策略
通过对条件严格的限制,破坏产生死锁的四个必要条件
条件
破坏互斥条件
通过破坏互斥条件来预防死锁方式的产生不可行
必须互斥访问
对于共享资源的访问
对于不可剥夺临界资源的访问
破坏不可剥夺条件
概念
对于一个进程
如果已经获得某些资源
如果请求新的资源不能立即得到满足
该进程必须释放其已经获得的所有资源
如有需求
重新申请
适用与不适用
适用于
可剥夺资源
实例
CPU
不适用于
不可剥夺资源
打印机
磁盘机
体现
第一方面
一旦释放目前所拥有的资源
会造成前一阶段时间工作全部失效
对于不可剥夺资源还可能出现数据丢失问题
第二方面
重复申请资源
重复释放资源
会造成
系统开销增加
降低系统吞吐量
使用情况
一般情况下因为访问不可剥夺资源而产生死锁时
不会采取破坏不剥夺条件来防止死锁产生
破坏请求与保持条件
请求与保持条件的特点
目的
为预防死锁产生
方法
采用预先静态分配方法
内容
在进程处于就绪状态
一次性申请进程运行时所需要的全部资源
如果存在某些资源不能得到满足
不能运行该进程
如果全部资源都申请成功
立即运行进程
所有的资源在运行期间
一直归当当前进程所有
不再被其他进程请求
不再请求其他资源
现象
系统资源被严重浪费
某些资源长期被其他进程占用
部分进程出现饥饿现象
破坏循环等待条件
为了环路等等待条件
资源分配时可以采用有序资源分配法
将系统中的所有资源都按类型顺序为每个资源进行编号
进程请求资源的规则
严格按照编号递增顺序请求资源
要求同类资源一次申请完毕
当进程提出请求资源R
后续的请求按照递增的顺序
只能请求排在R后面的资源
不能请求编号排在R前面的资源
结果
限制了循环请求资源
预防了死锁的产生