1、 I 操 作 系 统操 作 系 统 课 程 设 计 说 明 书课 程 设 计 说 明 书 题目: 银行家算法模拟 2013 年 1 月 9 日 II 课程设计(论文)任务书 计算机科学与工程学院 计算机科学与技术系 学 号 学生姓名 专业(班级) 计算机 10-5 班 设计题目 银行家算法模拟 设 计 技 术 参 数 系统平台:Windows 7 开发工具:vc+ 6.0 开发语言:c/c+语言 设 计 要 求 1.系统基本实现安全性、添加资源、修改资源、配置资源等算法。 2.要求系统能实现人机交互,界面友好。 3.当输入一组资源和作业的数量时,可以根据其需求量判断系统安全性。 工 作 量 1
2、.设计报告要求不少于 4000 字。 2.源程序要求不少于 300 行 工 作 计 划 2012.11.212012.11.28 算法的分析及系统的功能分析 2012.11.292012.12.03 系统的总体设计 2012.12.042012.12.10 系统功能的详细设计 2012.12.112012.12.24 系统的编码设计和界面设计 2012.12.252013.01.01 系统的调试及测试 2013.01.022013.01.09 撰写课程设计报告 参 考 资 料 1汤小丹,梁红兵,哲凤屏,汤子瀛.计算机操作系统.第三版.西安:西安电子科 技大学出版社,2007 2 谭浩强. C
3、程序设计.第三版.北京:清华大学出版社,2005 3张海藩.软件工程导论.第五版.北京:清华大学出版社,2008 4 冯博琴.Visual C+与面向对象程序设计教程.第三版. 高等教育出版社; 2010 指导教师签字 系主任签字 2013 年 1 月 9 日 III 摘 要 银行家算法是一个用来预防系统进入死锁状态的算法,用它可以判断系统的安全 性,如果系统当前处于安全状态,则可以为申请资源的进程分配资源;如果不是安全状 态,则不能为申请资源的进程分配资源。 银行家算法执行过程中,首先判断申请资源 的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全 性算法求出安全序
4、列,如果存在安全序列,则说明可以给申请资源的进程分配资源,分 配成功,继续为其它进程服务。如果找不到安全序列,则说明为该进程分配资源后系统 会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。若申请资源 的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其 他申请资源的进程。 关键词:可用资源,最大需求矩阵,分配矩阵,需求矩阵,安全性算法,安全序列 IV 目 录 1.绪论 1 1.1 系统分工 1 1.2 课题背景 1 1.3 死锁 1 1.4 安全性 2 1.5 算法设计思想 2 2.需求分析 . 3 2.1 基本要求 3 2.2 模块划分 3 3.总体
5、设计 . 4 3.1 算法设计 4 3.2 模块设计 5 4.详细设计 . 6 4.1 程序流程图 6 4.2 主要函数的核心代码 6 5.程序测试 12 5.1 界面设计 . 12 5.2 数据测试 . 13 5.3 操作提示 . 14 6.总结 . 16 参考文献 17 1 1.绪论 1.1 系统分工 银行家算法模拟 设计内容及其说明 本人设计内容 主要和组员张鑫设计 MFC 界面和代码的调试,涉及主要功能代码,包 括其他组员设计的主要函数代码嵌入到 MFC 中,主要编写了银行家算 法。对 MFC 程序遇到的错误修改、功能缺失及算法不健壮等问题作了 修改。之后和其他组员一起将其他的功能嵌入
6、到程序里,主要是添加 资源,删除资源,修改资源,分配资源和增加作业功能,最终完成了 了一个整体的银行家算法。 其他组员设计内容 添加资源,修改资源,删除资源,分配资源,增加作业。 1.2 课题背景 在多道程序系统中,虽可以借助多个进程的并发执行来改善系统的资源利用率,提 高系统吞吐量,但可能发生一种危险死锁,即多个进程在运行过程中因争夺资源而 造成的一种僵局,若无外力作用,将无法再向前推进。如此,寻求一种避免死锁的方法 便显得有为重要。死锁的产生一般的原因有两点:竞争资源和进程间推进顺序非法。因 此,我们只需在当前的有限资源下,找到一组合法的执行顺序,便能很好的避免死锁, 我们称它为安全序列。而银行家算法起源于银行系统的发放贷款,和计算机操作系统的 资源分配完全符合,因此可以借鉴该算法的思想,设计出一种有效的算法程序,解决该 问题。 1.3 死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种 互相等待的现象,若无外力作用,它们都将无法推进下去。此时称