1、目录 I 题目全称:题目全称:用高级语言用高级语言 JavaJava 设计辅助教学软件(设计辅助教学软件(模拟银行家算法模拟银行家算法) 目录 第 1 章 绪论 3 1.1 课题背景 3 1.2 课题目的 3 1.3 课题意义 3 1.4 银行家算法 3 1.5 死锁 4 1.6 安全性序列 4 第 2 章 需求分析 5 2.1 环境需求 5 2.2 功能需求 5 2.3 性能需求 5 2.4 界面需求 6 2.5 本章小结 6 第 3 章 概要设计 7 3.1 总体设计 7 3.1.1 界面设计 7 3.1.2 功能模块设计 7 3.1.3 初始化进程数与资源数 7 3.1.4 初始化资源
2、7 3.1.5 资源状况的显示 7 3.1.6 申请资源 Request 8 3.2 本章小结 8 第 4 章 详细设计 9 4.1 开发环境介绍 9 4.2 主要功能模块简介 9 4.2.1 概述 9 4.2.2 程序工作流程 10 4.2.3 界面设计简介 10 4.2.4 面向对象的思想 10 4.2.5 MVS 模式 .11 4.3 主要模块详细设计 .11 4.3.1 模型类和边缘类 .11 4.3.2 模型类 .11 4.3.3 边缘类 12 4.3.4 银行家算法核心类 safety.java 12 4.3.5 算法流程 12 4.3.6 safety.java 源代码 14 4
3、.3.7 简要说明 17 4.4 界面 17 4.5 本章小结 18 第 5 章 测试及成果展示 19 5.1 测试环境 19 5.1.1 硬件环境 19 5.1.2 软件运行软件环境 19 5.1.3 测试方法和工具 19 5.2 测试用例和结果 19 5.2.1 测试范围 19 5.2.2 界面测试 19 5.2.3 软件工作原理模拟过程测试 20 5.3 成果展示 23 5.4 本章小结 23 参考文献 24 第 1 章 绪论 3 第1章 绪论 1.1 课题背景 在多道程序系统中,虽可以借助多个进程的并发执行来改善系统的资源利用率, 提高系统吞吐量,但可能发生一种危险死锁,即多个进程在运
4、行过程中因争夺资 源而造成的一种僵局,若无外力作用,将无法再向前推进。如此,寻求一种避免死锁 的方法便显得有为重要。死锁的产生一般的原因有两点:竞争资源和进程间推进顺序 非法。因此,我们只需在当前的有限资源下,找到一组合法的执行顺序,便能很好的 避免死锁,我们称它为安全序列。而银行家算法起源于银行系统的发放贷款,和计算 机操作系统的资源分配完全符合,因此可以借鉴该算法的思想,设计出一种有效的算 法程序,解决该问题。 1.2 课题目的 1. 进一步理解利用银行家算法避免死锁的问题。 2. 在了解和掌握银行家算法的基础上,编制银行家算法通用程序,将调试结果显示 在计算机屏幕上,再检测和笔算的一致性
5、。 3. 理解和掌握安全序列、安全性算法。 1.3 课题意义 1. 运用软件工程的方法指导设计和实现,即是对这学期刚刚学过的软件工程课的复 习,又是一次实战演练,从而提高自己的分析问题,解决问题和动手能力; 2. 通过整个算法的设计与实现进一步加深了对算法的理解和多道程序下的计算机系 统资源分配现状,为以后进一步的学习打下了良好的基础。 1.4 银行家算法 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资 金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行 家规定: 1. 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客; 2.
6、 顾客可以分歧贷款,但贷款的总数不能超过最大需求量; 3. 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付, 但总能使顾客在有限的时间里得到贷款; 4. 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金。操作系统 计算机操作系统课程设计 按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程 对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的 申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该 进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需 求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该 进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分 配。 1.5 死锁 死锁是进程死锁的简称, 是由 Dijkstra 于 1965 年研究银行家算法时首先提出来的。 是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。很显然,如果没 有外力的作用,那麽死锁涉及到的各个进程都将永远处于封锁状态。 它是计算机