第三章 处理机调度与死锁(二)

本文详细探讨了操作系统中防止死锁的三种策略:破坏“请求和保持”条件、破坏“不可抢占”条件以及破坏“循环等待”条件,并介绍了如何利用银行家算法避免死锁。此外,还讲解了死锁检测与解除的方法,包括检测时机、资源分配图的简化和死锁检测算法。通过对资源分配的严格控制,可以确保系统的安全性,防止进入死锁状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.6 预防死锁

1. 破坏“请求和保持”条件

所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。

  1. 优点:简单、易行且安全
  2. 缺点:①资源被严重浪费 ②使进程经常会发生饥饿现象
2. 破坏“不可抢占”条件

允许进程先运行,提出新的资源请求而不能得到满足时,必须释放已经保持的所有资源,待以后需要时重新申请。
实现比较复杂,且需付出很大代价,可能会造成进程前一阶段工作的失效,反复申请和释放资源。

3. 破坏“循环等待”条件

对系统所有资源类型进行线性排序,并赋予不同的序号,每个进程必须按序号递增的顺序请求资源。在采用这种策略后所形成的资源分配图中,不可能再出现环路。
与前两种策略比较,其资源利用率和系统吞吐量都有较明显的改善,但也存在以下问题:
3. 为系统中各类资源所规定的序号,限制了新类型设备的增加;
4. 作业使用各类资源的顺序与系统规定的顺序不同;
5. 会限制用户编程自由。

3.7 避免死锁

1. 安全状态:是指系统能按某种进程推进顺序(P1,P2,…,Pn)为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。

(P1,P2,…,Pn)为安全序列。
6. 最终释放的总资源为所有资源总和,可检查是否计算出错。
7. 并非所有不安全状态都必然会转为死锁状态,不安全状态一旦出错才有可能转为死锁状态。
8. 只要系统处于安全状态,系统便不会进入死锁状态。

2.利用银行家算法避免死锁
  • 数据结构:
    ①可利用资源向量Available
    ②最大需求矩阵Max
    ③分配矩阵Allocation<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值