收藏 分享(赏)

银行家算法避免死锁的研究与实现_毕业论文.doc

上传人:无敌 文档编号:720250 上传时间:2018-04-19 格式:DOC 页数:33 大小:212.50KB
下载 相关 举报
银行家算法避免死锁的研究与实现_毕业论文.doc_第1页
第1页 / 共33页
银行家算法避免死锁的研究与实现_毕业论文.doc_第2页
第2页 / 共33页
银行家算法避免死锁的研究与实现_毕业论文.doc_第3页
第3页 / 共33页
银行家算法避免死锁的研究与实现_毕业论文.doc_第4页
第4页 / 共33页
银行家算法避免死锁的研究与实现_毕业论文.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、长 治 学 院2013 届学士学位毕业论文银行家算法避免死锁的研究与实现学 号: 09407227 姓 名: 王子丹 指导教师: 陕粉丽 专 业: 计算机科学与技术 系 别: 计算机系 完成时间:2013 年 5 月长治学院学士学位论文(设计)I银行家算法避免死锁的研究与实现专业:计算机科学与技术 姓名:王子丹 学号:09407227指导教师:陕粉丽摘 要: Dijkstra 的银行家算法是最有代表性的避免死锁的算法,该算法由于能用于银行系统现金贷款的发放而得名。银行家算法是在确保当前系统安全的前提下推进的。对进程请求先进行安全性检查,来决定资源分配与否,从而确保系统的安全,有效的避免了死锁的

2、发生。该论文在理解和分析了银行家算法的核心思想以及状态的本质含义的前提下,对算法的实现在总体上进行了设计,包括对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行测试,最后进行程序的测试,在设计思路上严格按照软件工程的思想执行,确保了设计和实现的可行性。 关键词:银行家算法;死锁;避免死锁;安全性序列银行家算法避免死锁的研究与实现II目 录1 前言 .11.1 课题背景 .11.2 死锁 .11.3 系统安全状态 .21.4 银行家算法 .22 需求分析 .32.1 问题描述 .32.2 基本要求 .32.3 数据流模型 .33 概要设计 .43.1 模块的划分 .43

3、.2 模块调用关系 .43.3 各模块之间的接口 .43.4 程序流程图 .54 详细设计 .64.1 数据结构选取分析 .64.2 数据结构设计 .64.3 算法整体设计与调用 .64.4 程序流图 .75 程序分析测试 .95.1 分模块分析与测试 .95.2 集成测试 .116 结论 .12参考文献 .12致谢 .14附录 .15长治学院学士学位论文 (设计)1银行家算法避免死锁的研究与实现1 前言1.1 课题背景在 多 道 程 序 系 统 中 , 虽 可 以 借 助 多 个 进 程 的 并 发 执 行 来 改 善 系 统 的 资 源 利 用率 , 提 高 系 统 吞 吐 量 , 但 可

4、 能 发 生 一 种 危 险 死 锁 。 如 此 , 寻 求 一 种 避 免 死 锁的 方 法 便 显 得 很 重 要 。 死 锁 产 生 的 一 般 原 因 有 两 点 : 竞 争 资 源 和 进 程 间 推 进 顺 序非 法 。 因 此 , 我 们 只 需 在 当 前 的 有 限 资 源 下 , 找 到 一 组 合 法 的 执 行 顺 序 , 便 能 很好 的 避 免 死 锁 。 而 银 行 家 算 法 起 源 于 银 行 系 统 的 发 放 贷 款 , 和 计 算 机 操 作 系 统 的资 源 分 配 完 全 符 合 , 因 此 可 以 借 鉴 该 算 法 的 思 想 , 设 计 出 一

5、 种 有 效 的 算 法 程 序 ,解 决 该 问 题 。1.2 死锁死 锁 是 进 程 死 锁 的 简 称 , 是 指 多 个 进 程 循 环 等 待 它 方 占 有 的 资 源 而 无 限 期 地僵 持 下 去 的 局 面 。 很 显 然 , 如 果 没 有 外 力 的 作 用 , 那 么 死 锁 涉 及 到 的 各 个 进 程 都将 永 远 处 于 封 锁 状 态 。 虽 然 进 程 在 运 行 过 程 中 会 产 生 死 锁 , 但 死 锁 的 发 生 也 必 须具 备 四 个 条 件 : ( 1) 互 斥 条 件 ; ( 2) 请 求 与 保 持 条 件 ; ( 3) 不 剥 夺 条

6、 件 ;( 4) 环 路 与 等 待 条 件 。为 保 证 系 统 中 诸 进 程 的 正 常 运 行 , 应 事 先 采 取 必 要 的 措 施 , 来 预 防 发 生 死 锁 。目 前 , 预 防 死 锁 的 方 法 可 归 结 为 以 下 两 种 :( 1) 预 防 死 锁 。 它 是 通 过 设 置 某 些 限 制 条 件 。 去 破 坏 产 生 死 锁 的 四 个 条 件 中的 一 个 或 几 个 条 件 , 来 预 防 发 生 死 锁 。( 2) 避 免 死 锁 。 同 样 是 实 现 预 防 的 策 略 但 是 他 并 不 是 实 现 采 取 各 种 限 制 措 施去 破 坏 产

7、 生 死 锁 的 四 个 条 件 , 而 是 在 资 源 分 配 过 程 中 , 用 某 种 方 法 去 防 止 系 统 进入 不 安 全 的 状 态 , 从 而 避 免 死 锁 。( 3) 检 测 死 锁 。 这 种 方 法 并 不 须 事 先 采 取 任 何 限 制 性 措 施 , 也 不 需 检 查 系 统是 否 进 入 不 安 全 区 , 而 是 允 许 系 统 在 运 行 过 程 中 发 生 死 锁 。 通 过 系 统 设 置 的 检 测机 构 , 及 时 的 检 测 出 死 锁 的 发 生 。 然 后 , 采 取 适 当 的 手 段 , 将 死 锁 清 除 掉 。( 4) 解 除

8、死 锁 。 与 检 测 死 锁 相 配 套 , 当 系 统 发 生 死 锁 的 时 候 , 将 进 程 从 死 锁中 解 除 出 来 。银行家算法避免死锁的研究与实现21.3 系统安全状态预 防 死 锁 和 解 除 死 锁 都 是 通 过 施 加 条 件 限 制 , 来 预 防 发 生 死 锁 。 但 预 防 死 锁所 施 加 的 条 件 较 严 格 , 这 往 往 会 影 响 进 程 的 并 发 执 行 , 而 避 免 死 锁 所 施 加 的 限 制条 件 则 较 宽 松 , 这 给 进 程 的 运 行 提 供 了 较 宽 松 的 环 境 , 有 利 于 进 程 的 并 发 执 行 。要 想

9、 避 免 死 锁 , 就 必 须 考 虑 进 程 是 否 处 于 安 全 状 态 , 只 要 处 于 安 全 状 态 就 可以 避 免 死 锁 。 所 谓 的 安 全 状 态 就 是 指 系 统 按 某 种 进 程 顺 序 ( P1, P2, , Pn)( 称 为 安 全 序 列 ) , 来 为 某 种 进 程 分 配 资 源 , 直 至 满 足 每 个进 程 对 资 源 的 最 大 需 求 , 使 每 个 进 程 都 能 够 顺 利 完 成 。 但 如 果 系 统 无 法 找 到 这 样一 个 安 全 序 列 , 则 称 系 统 处 于 不 安 全 状 态 。1.4 银行家算法银 行 家 算

10、 法 是 最 具 有 代 表 性 的 避 免 死 锁 的 算 法 , 是 由 于 该 算 法 能 用 于 银 行 系统 现 金 贷 款 的 发 放 而 得 名 。 我 们 可 以 把 操 作 系 统 看 作 是 银 行 家 , 操 作 系 统 管 理 的资 源 相 当 于 银 行 家 管 理 的 资 金 , 进 程 向 操 作 系 统 请 求 分 配 资 源 相 当 于 用 户 向 银 行家 贷 款 。 为 保 证 资 金 的 安 全 ,银 行 家 规 定 :( 1) 当 一 个 顾 客 对 资 金 的 最 大 需 求 量 不 超 过 银 行 家 现 有 的 资 金 时 就 可 接 纳 该顾

11、客 ;( 2) 顾 客 可 以 分 次 贷 款 ,但 贷 款 的 总 数 不 能 超 过 最 大 需 求 量 ;( 3) 当 银 行 家 现 有 的 资 金 不 能 满 足 顾 客 尚 需 的 贷 款 数 额 时 ,对 顾 客 的 贷 款 可推 迟 支 付 ,但 总 能 使 顾 客 在 有 限 的 时 间 里 得 到 贷 款 ;( 4) 当 顾 客 得 到 所 需 的 资 金 后 ,一 定 能 在 有 限 的 时 间 里 归 还 所 有 的 资 金 。操 作 系 统 按 照 银 行 家 制 定 的 规 则 为 进 程 分 配 资 源 , 当 进 程 首 次 申 请 资 源 时 ,要 测 试 该

12、 进 程 对 资 源 的 最 大 需 求 量 , 如 果 系 统 现 存 的 资 源 可 以 满 足 它 的 最 大 需 求量 则 按 当 前 的 申 请 量 分 配 资 源 , 否 则 就 推 迟 分 配 。 当 进 程 在 执 行 中 继 续 申 请 资 源时 , 先 测 试 该 进 程 已 占 用 的 资 源 数 与 本 次 申 请 的 资 源 数 之 和 是 否 超 过 了 该 进 程 对资 源 的 最 大 需 求 量 。 若 超 过 则 拒 绝 分 配 资 源 , 若 没 有 超 过 则 再 测 试 系 统 现 存 的 资源 能 否 满 足 该 进 程 尚 需 的 最 大 资 源 量

13、 , 若 能 满 足 则 按 当 前 的 申 请 量 分 配 资 源 , 否则 也 要 推 迟 分 配 。那 么 , 安 全 序 列 在 银 行 家 算 法 中 的 实 际 意 义 在 于 : 系 统 每 次 进 行 资 源 分 配 后 ,如 果 对 于 系 统 中 新 的 资 源 状 况 , 存 在 一 个 安 全 序 列 , 则 至 少 存 在 一 条 确 保 系 统 不长治学院学士学位论文 (设计)3会 进 入 死 锁 的 路 径 。2 需求分析2.1 问题描述运 用 银 行 家 算 法 避 免 死 锁 的 发 生 是 在 确 保 当 前 系 统 安 全 的 前 提 下 推 进 的 ,

14、对进 程 请 求 先 进 行 安 全 性 检 查 来 决 定 资 源 分 配 与 否 , 从 而 确 保 系 统 的 安 全 , 有 效 的避 免 了 死 锁 的 发 生 。问 题 的 关 键 在 于 安 全 性 算 法 , 即 查 找 安 全 性 序 列 。2.2 基本要求( 1) 从 键 盘 输 入 当 前 系 统 的 资 源 信 息 , 包 括 当 前 可 用 资 源 , 每 个 进 程 对 各 类资 源 的 最 大 需 求 量 , 每 个 进 程 当 前 已 分 配 的 各 个 资 源 量 和 每 个 进 程 尚 需 要 的 各 个资 源 量 ;( 2) 输 入 进 程 请 求 , 按

15、 照 设 计 好 的 安 全 性 算 法 进 行 检 查 , 得 到 结 果 并 输 出 整个 执 行 过 程 的 相 关 信 息 和 最 终 结 果 ;( 3) 要 求 要 有 各 种 异 常 的 处 理 , 程 序 的 可 控 制 性 和 可 连 续 性 执 行 。 包 括 对 进程 的 存 在 有 无 检 查 , 请 求 向 量 的 不 合 法 检 查 , 试 分 配 失 败 后 的 数 据 恢 复 和 重 新 接受 进 程 请 求 等 。 2.3 数据流模型用 键 盘 输 入 信 息 , 对 系 统 资 源 初 始 化 , 输 入 进 程 请 求 , 用 安 全 性 算 法 进 行 安

16、全 性 检 查 , 系 统 安 全 的 话 就 进 行 试 分 配 , 再 进 行 安 全 性 检 查 ; 如 果 试 分 配 失 败 则恢 复 系 统 。 如 图 1 所 示 。图 1 数据流模型试分配安全性检查输入信息 输出结果安全性检查初始化银行家算法避免死锁的研究与实现43 概要设计3.1 模块的划分由 于 该 算 法 规 模 较 小 , 所 以 选 用 结 构 化 的 设 计 方 法 , 将 该 系 统 划 为 四 块 , 分别 是 :( 1) 主 模 块 , 处 在 整 个 系 统 的 最 高 层 , 负 责 组 织 调 用 其 他 模 块 ;( 2) 初 始 化 模 块 , 负

17、责 从 键 盘 读 入 系 统 资 源 和 进 程 状 态 , 并 将 系 统 初 识 资 源分 配 状 态 打 印 ;( 3) 试 分 配 模 块 , 负 责 处 理 进 程 请 求 和 相 应 的 数 据 结 构 的 修 改 , 以 及 特 殊 情况 的 处 理 ;( 4) 安 全 性 检 查 , 负 责 试 分 配 后 的 安 全 性 检 查 , 以 及 系 统 不 安 全 时 的 资 源 恢复 。3.2 模块调用关系银 行 家 算 法 系 统 有 四 个 模 块 , 各 模 块 之 间 的 调 用 关 系 如 图 2 所 示 :图 2 模块调用关系图3.3 各模块之间的接口系 统 的

18、四 个 模 块 用 到 三 个 接 口 。 分 别 为 Flag1, pro, Flag2。 它 们 的 功 能 介绍 如 下 :Flag1: 试 分 配 模 块 Attempt_Allocation 与 安 全 性 检 查 Safety_Algorithm 之 间接 口 Attempt_Allocation 通 过 检 查 flag 的 真 假 了 判 断 是 否 执 行 。Pro: 一 个 地 址 , Safety_Algorithm 返 回 给 主 模 块 main 的 信 息 , 不 为 NULL时 表 示 试 分 配 成 功 , 否 则 系 统 转 入 相 应 异 常 处 理 。主模

19、块Main()初始化Init_process()试分配Attempt_Allocation()安全性检查Safety_Algorithm()长治学院学士学位论文(设计)5Flag2: Safety_Algorithm 与 主 模 块 之 间 的 接 口 , 为 真 则 调 用 打 印 函 数 , 输 出最 终 结 果 , 否 则 调 用 恢 复 函 数 , 恢 复 之 前 系 统 状 态 。3.4 程序流程图假 设 Request 是 进 程 的 请 求 向 量 , Need 是 需 求 向 量 , Available 是 可 利 用 资源 向 量 。 如 果 Requestj Needi,j

20、, 则 认 为 出 错 , 进 入 等 待 状 态 。 因 为 它 所 需 要的 资 源 数 已 经 超 得 过 最 大 值 , 否 则 判 断 Requestj, Availablej。 如 果 Requestj Availablej, 则 表 示 尚 无 足 够 资 源 , 进 程 需 要 等 待 。 接 着 , 系 统 试 探 着 把 资 源分 配 给 进 程 , 系 统 执 行 安 全 性 算 法 。 检 查 此 次 分 配 后 系 统 是 否 处 于 安 全 状 态 。 若安 全 , 才 正 式 将 资 源 分 配 给 进 程 , 来 完 成 分 配 。 否 则 , 将 本 次 的

21、试 探 分 配 作 废 ,恢 复 原 来 的 资 源 分 配 。 具 体 程 序 总 流 程 图 如 图 3 所 示 。YYYN开始结束申请资源试探分配安全性算法进程等待 正式分配 恢复程序RENE?REAVE?系统安全?NN银行家算法避免死锁的研究与实现6图 3 程序总流程图4 详细设计4.1 数据结构选取分析该 算 法 中 用 到 了 较 多 的 数 据 , 基 于 程 序 的 易 实 现 和 较 好 的 结 构 , 决 定 采 用 结构 链 表 , 以 进 程 为 单 位 ( 结 点 ) 。4.2 数据结构设计typedef struct my_processint num; int M

22、axM;int AllocationM;int NeedM;struct my_process* next;process;int AvailableM=0;int RequestM=0;int Record_workNM=0;int SafetyN=0; 4.3 算法整体设计与调用主 函 数 void main( ) 主 要 分 四 大 块 :( 1) 首 先 需 要 初 始 化 Init_process( process *head, int m, int* count) , 存储 系 统 当 前 状 态 信 息 ;( 2) 调 用 安 全 算 法 Safety_Algorithm, 检

23、测 当 前 系 统 安 全 状 态 , 若 安 全 则 进行 下 一 步 , 否 则 打 印 相 关 信 息 , 程 序 退 出 ;( 3) 调 用 试 分 配 函 数 Attempt_Allocation, 进 行 试 分 配 , 若 试 分 配 成 功 , 修改 相 关 数 据 结 构 , 打 印 当 前 系 统 资 源 分 布 图 , 转 下 一 步 。 否 则 , 打 印 提 示 信 息 ,接 收 其 他 请 求 向 量 ;( 4) 再 次 调 用 安 全 性 算 法 , 检 查 试 分 配 以 后 的 系 统 安 全 性 , 若 安 全 打 印 安 全性 序 列 和 当 前 系 统 资 源 分 布 图 , 并 进 入 新 一 轮 的 执 行 。 否 则 之 前 的 试 分 配 作 废 ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报