(银行家算法课程设计报告.docVIP

  • 404
  • 0
  • 约1.4万字
  • 约 33页
  • 2016-12-06 发布于北京
  • 举报
(银行家算法课程设计报告

操作系统课程设计报告 题目:银行家算法 院 (系): 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 120605 学 生: 蔡学利 学 号: 120605101 指导教师: 姜红 2015年 1月 摘 要 银行家算法是一个用来避免系统进入死锁状态的算法,用它可以判断系统的安全性,如果系统当前处于安全状态,则可以为申请资源的进程分配资源,如果不是安全状态,则不能为申请资源的进程分配资源。 银行家算法执行过程中,首先判断申请资源的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全性算法求出安全序列,·如果存在安全序列,则说明可以给申请资源的进程分配资源,分配成功,继续为其它进程服务。如果找不到安全序列,则说明为该进程分配资源后系统会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。若申请资源的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其他申请资源的进程。 论文首先对算法的设计从总体上进行了分析,然后分析各个细节,再对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行调试和测试,最后进行组装测试及系统测试,使其成为一个可以用来判断系统安全状态的程序。 关键词:可用资源 最大需求矩阵 分配矩阵 需求矩阵 请求向量 试分配 安全性算法 安全序列 目 录 摘 要 2 目 录 3 1 绪论 5 1.1课题背景 5 1.2 课题意义 5 1.3 运行环境 5 2 需求分析 6 2.1 问题描述 6 2.2 基本要求 6 2.3 概要分析 6 3 算法思想 8 3.1 安全性算法的算法思想 8 3.1.1设置两个向量: 8 3.1.2安全性检测 8 3.2 银行家算法的算法思想 9 3.2.1 银行家算法的思路 9 3.2.2 银行家算法 9 3.2.3 安全性检查算法 9 4详细设计 11 4.1银行家算法中用到的主要数据结构设计 11 4.2算法整体设计与调用 11 4.3模块设计与时间复杂度分析 13 4.3.1 int check_distribution(int* p,int k)函数 13 4.3.2 int check_safe()银行家算法 13 4.3.2 void print()输出函数 13 4.4程序流程图 13 4.5.1 主函数void main()函数流程图 14 4.5.2 判断试分配函数int check_distribution(int* p,int k)流程图 14 4.5.3银行家算法int check_safe()流程图 15 4.5.4 输出函数void print() 流程图 15 5 程序调试、分析与修改 16 5.1分模块调试与分析 17 5.1.1进程信息的输入与输出调试 17 5.1.2 进程请求资源输入出错提示信息处理 18 5.1.3 判断试分配函数int check_distribution(int* p,int k) 18 5.1.4 求安全序列函数int check_safe() 19 6 结论 20 7 小结 21 参考文献 22 附录(源代码) 23 1 绪论 1.1课题背景 在预防死锁的各种算法中,总的来说,都是施加了较强的限制条件,从而使实现简单,但却严重地损害了系统的性能。在避免死锁的算法中,施加的条件较较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统处于安全状态,便可避免死锁的发生。 最具有代表性的避免死锁的算法是Dijkstra的银行家算法。这是因为该算法能用于银行系统现金贷款的发放而得名,在这一次的课程设计中就要对银行家算法从分析到实现,整体做一个详细的描述。 1.2 课题意义 (1)从课程设计上讲,提高自己的分析问题,解决问题和动手能力; (2)从银行家算法上本身讲,通过算法可以判断系统的安全性,对申请资源的进程进行限制,从而避免系统进入死锁状态。 1.3 运行环境 Turbo C; Visual C++ 6.0 2 需求分析 2.1 问题描述 当系统在进行资源管理时,如果对进城申请的资源分配不当,可能会使系统进入死锁状态,因而后面到来的进程也无法顺利执行。银行家算法中,要对当前申请资源的进程申请资源的数目进行判断,如果可以试分配,则试求出一个安全序列,如果可以求出

文档评论(0)

1亿VIP精品文档

相关文档