操作系统 第5章教学课件.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《操作系统 第5章教学课件.pptx》由会员分享,可在线阅读,更多相关《操作系统 第5章教学课件.pptx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统 第5 章教学课件第5章 死锁目录C O N T E N T S5.35.45.55.6处理死锁的策略死锁的预防死锁的避免死锁的检测和解除5.15.2死锁的概念死锁的产生5.7 饥饿死锁的概念5.15.1 死锁的概念由于临界资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而导致无法继续运行。这就产生了两个或两个以上的进程长期处于等待状态的一种特殊现象,这种现象称为死锁。死锁现象不仅出现在计算机系统中,在日常生活中也广泛存在。例如,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行,无法让两辆汽车并行。在计算机系统中也存在类似的情况。例如,某
2、计算机系统中只有一台打印机和一台输入设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。死锁的产生5.25.2.1 资源分类操作系统是一个资源管理者,负责分配不同类型的资源给进程使用。现代操作系统所管理的资源类型十分丰富,并且可以从不同的角度出发对其进行分类。例如,可以把资源分为可剥夺资源和不可剥夺资源。按资源使用期限,可将资源分为可再次使用的永久资源和消耗性的临时资源。一般来说,所有的硬件资源都属于可再次使用的永久资源,它们可以被进程反复使用。不可剥夺资源是指除占用资源的进程不再需要使用该资
3、源而主动释放资源外,其他进程不得在占用进程使用资源过程中强行剥夺。在进程同步和通信中出现的消息、信号和数据也可以看做资源,它们属于消耗性的临时资源,因为类似消息这类资源,在接收进程对其处理后,消息就被撤销了,不再存在了。对永久资源和临时资源的使用都有可能导致死锁。5.2.2 死锁产生的原因死锁产生的原因之一是资源竞争。如 果 系 统 中 只 有 一 个进 程 在 运 行,所 有 资 源 为 一 个 进 程 独 享,则 不 会 出 现 死 锁现 象。当 系 统 中 有 多 个 进 程 并 发 执 行 时,若 系 统 中 的 资 源不 足 以 同 时 满 足 所 有 进 程 的 需 要,则 引 起
4、 进 程 对 资 源 的 竞争,从 而 可 能 导 致 死 锁 的 产 生。图 5-1给 出 了 两 个 进 程 竞争资源的情况。在 图 5-1中,假 定 进 程 P1和 P2分 别 申 请 到 了 资 源 A和 资 源B,现 在 进 程 P1又 提 出 使 用 资 源 B的 申 请,由 于 资 源 B已 被进 程 P2占 用,所 以 进 程 P1阻 塞;而 进 程 P2可 以 继 续 运 行,进 程 P2在 运 行 中 又 提 出 使 用 资 源 A的 申 请,由 于 资 源 A已 被进 程 P1占 用,所 以 进 程 P2阻 塞。于 是 进 程 P1、P2都 因 资 源得不到满足而进入阻塞
5、状态,两个进程发生死锁。1)操作系统的地位5.2.2 死锁产生的原因死锁产生的原因之二是进程的推进顺序不当。竞争 资 源 虽 然 可 能 导 致 死 锁,但 资 源 竞 争 并 不 等 于 死锁,只 有 在 进 程 运 行 过 程 中 请 求 和 释 放 资 源 的 顺 序不 当 时(即 进 程 的 推 进 顺 序 不 当 时),才 会 导 致 死锁。在 图 5-1中,若 进 程 P1和 P2按 照 下 列 顺 序 执 行:P1申 请 A,P1申 请 B,P1释 放 A,P1释 放 B;P2申 请 B,P2申 请 A,P2释 放 B,P2释 放 A,则 两 个 进 程 均 可 以 顺利 运 行
6、 完 成,不 会 发 生 死 锁。图 5-2中 的 路 径 给 出了 进 程 的 上 述 执 行 顺 序。类 似 的,若 两 个 进 程 按 照路 径 和 路 径 所 示 的 顺 序 推 进 也 不 会 产 生 死 锁,但按照路径所示的顺序推进则会产生死锁。1)操作系统的地位5.2.3 产生死锁的必要条件互斥条件。进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个进程所占有。请求和保持条件。在等待分配新资源的同时,进程继续占有已分配到的资源。请求和保持条件又称占有且等待条件、部分分配条件。不剥夺条件。进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的
7、进程自己释放。循环等待条件。存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求。3)系统调用与过程(函数)调用的区别处理死锁的策略5.35.3 处理死锁的策略目前用于处理死锁的策略主要有以下几种。忽略死锁这 种 处 理 方 式 又 称 鸵 鸟 算法,是 指 像 鸵 鸟 一 样 对 死锁 视 而 不 见。不 同 的 人 对死锁现象有不同的反应。预防死锁通 过 设 置 某 些 限 制 条 件 来破 坏 产 生 死 锁 的 4个 必 要 条件 中 的 一 个 或 几 个 来 防 止发生死锁。避免死锁在 资 源 的 动 态 分 配 过 程 中,用 某 种 方 法 防
8、 止 系 统 进 入 不安全状态,从而避免死锁。检测及解除死锁通 过 系 统 的 检 测 机 构 及 时 地 检测 出 死 锁,然 后 采 取 某 种 措 施解除死锁。死锁的预防5.45.4 死锁的预防要想防止死锁的发生,只破坏死锁产生的4个必要条件之一即可。为 了 否 定 互 斥 条 件,就 要 允 许 多 个 进 程 同 时 访 问 资源。但 是 这 会 受 到 资 源 本 身 固 有 特 性 的 限 制,有 些 资源 根 本 不 能 同 时 访 问,只 能 互 斥 访 问。由 此 看 来,企图 通 过 否 定 互 斥 条 件 防 止 死 锁 的 发 生 是 不 可 能 的。对于 临 界
9、资 源 的 访 问,不 但 不 能 否 定 互 斥,相 反 还 要 设法保证互斥,因此只能破坏死锁的另外3个必要条件。5.4.1 破坏不剥夺条件为了破坏不剥夺条件,可以制定这样的策略:一个已获得了某些资源的进程,若新的资源请求不能立即得到满足,则它必须释放所有已获得的资源,以后需要资源时再重新申请。这意味着,一个进程已获得的资源在运行过程中可以被剥夺,从而破坏了不剥夺条件。该策略实现起来比较复杂,释 放 已 获 得 资 源 可 能 造成 前 一 段 工 作 的 失 效,重 复 申 请 和 释 放 资 源 会 增 加 系统 开 销,降 低 系 统 吞 吐 量。这 种 方 法 常 用 于 状 态
10、易 于保 存 和 恢 复 的 资 源,如 CPU的 寄 存 器 及 内 存 资 源,一 般不能用于打印机之类的资源。为了破坏请求和保持条件,可以采用静态资源分配法。静态资源分配法要求进程在其运行之前一次申请它所需要的全部资源,在它的资源未满足前,不把它投入运行。一旦投入运行后,这些资源就一直归它所有,也不再提出其他资源要求,这样就可以保证系统不会发生死锁。这种方法既简单又安全,但降低了资源利用率。采用这种方法必须事先知道作业(或进程)需要的全部资源,即使有的资源只在运行后期使用,甚至有的资源在正常运行中根本不用,也不得不预先统一申请,结果使得系统资源不能充分利用。以打印机为例,一个作业可能只在
11、最后完成时才需要打印计算结果,如果在作业运行前就把打印机分配给了它,那么在作业整个执行过程中打印机基本处于闲置状态。破坏请求保持条件 发生死锁5.4.2 破坏请求和保持条件5.4.3 破坏循环等待条件为 了 破 坏 循 环 等 待 条 件,可 以 采 用 有 序 资 源 分 配 法。有 序 资 源 分 配 法 的 实 现 思 想是 将 系 统 中 的 所 有 资 源 都 按类 型 赋 予 一 个 编 号(如 打 印机 为 1,磁 带 机 为 2,等 等),要 求 每 一 个 进 程 均 严 格 按 照编 号 递 增 的 次 序 来 申 请 资 源,同类资源一次性申请完。只 要 进 程 提 出
12、申 请 分 配 资源 Ri,则 该 进 程 在 以 后 的 资源 申 请 中,只 能 申 请 资 源 编号 排 在 Ri后 面 的 资 源(i为 资源 编 号),不 能 再 申 请 资 源编 号 低 于 Ri的 资 源。对 资 源申 请 作 了 这 样 的 限 制 后,系统 中 不 会 再 出 现 几 个 进 程 对资源的请求形成环路的情况。这 种 方 法 存 在 的 主 要 问 题是 各 种 资 源 编 号 确 定 后 不 宜修 改,从 而 限 制 了 新 设 备 的增 加;尽 管 在 为 资 源 编 号 时已 考 虑 到 大 多 数 作 业 实 际 使用 这 些 资 源 的 顺 序,但 也
13、 经常 会 发 生 作 业 使 用 资 源 的 顺序 与 系 统 规 定 顺 序 不 同 的 情况,造成资源的浪费。死锁的避免5.55.5 死锁的避免预防死锁方法中所采取的几种策略,总的来说都对资源的使用施加了较强的限制条件,虽然实现起来较为简单,但严重地损害了系统的性能。在避免死锁的方法中,不对进程申请资源施加限制条件,而是检查进程的资源申请是否会导致系统进入不安全状态,只要能使系统始终处于安全状态,便可避免死锁的发生。由于该方法对进程使用资源所施加的限制条件较弱,从而可能获得较好的系统性能。5.5.1 安全状态与不安全状态在 避 免 死 锁 的 方 法 中,允 许 进 程 动 态 地 申
14、请 资 源,系 统 在 进 行 资 源 分 配 之 前,先 计 算 资 源 分 配 的安全性。若此次分配不会导致系统进入不安全状态,便将资源分配给进程,否则进程需要等待。如 果 在 某 一 时 刻,系 统 能 按 某 种 顺 序 如 来 为 每 个 进 程 分 配 其 所 需 的 资 源,直 至 最大 需 求,使 每 个 进 程 都 可 以 顺 利 运 行 完 成,则 称 此 时 的 系 统 状 态 为 安 全 状 态,称 序 列 为安全序列。若某一时刻系统中不存在一个安全序列,则称此时的系统状态为不安全状态。虽 然 并 非 所 有 不 安 全 状 态 都 是 死 锁 状 态,但 是,当 系
15、统 处 于 不 安 全 状 态 时,便 可 能 进 而 进 入 死 锁状态;反之,只要系统处于安全状态,便可避免进入死锁状态。5.5.2 银行家算法可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类资源的空闲资源数目,其初始值是系统中所配置的该类资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Available(j)=k,就表示系统中现有k个空闲的Rj类资源。分配矩阵Allocation。这是一个nm的矩阵,它定义了系统中当前已分配给每一个进程的各类资源数目。最大需求矩阵Max。这是一个nm的矩阵,它定义了系统中每一个进程对各类资源的最大需求数目。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 第5章教学课件 教学 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内