目录
1. 设计目的……………………………………………………………………1 2. 问题描述……………………………………………………………………1 3. 需求分析……………………………………………………………………1 3.1 数据需求………………………………………………………………1 3.2 基本功能需求…………………………………………………………1 3.3 非功能性需求…………………………………………………………1 4. 概要设计……………………………………………………………………1 4.1 数据结构………………………………………………………………1 4.2 系统功能模块介绍……………………………………………………2 4.2.1 数据定义…………………………………………………………2 4.2.2 输出矩阵…………………………………………………………2 4.2.3 试分配资源………………………………………………………2 4.2.4 安全性检测………………………………………………………2 4.3 系统功能模块图………………………………………………………2 5. 详细设计……………………………………………………………………2 5.1 系统函数详细介绍……………………………………………………2 5.2 银行家算法……………………………………………………………3 5.3 安全性算法……………………………………………………………4 5.4 程序流程图……………………………………………………………4 6. 调试分析……………………………………………………………………6 7. 使用说明……………………………………………………………………8 8. 设计总结……………………………………………………………………8 9. 参考文献……………………………………………………………………9 10.程序源代码…………………………………………………………………9
西安建筑科技大学华清学院课程设计(论文)
1.设计目的
通过银行家算法设计与实现,可以加深学生对死锁的理解,掌握死锁的预防、避免、检测和解除的基本原理,重点掌握死锁的避免方法—银行家算法。使学生初步具有研究、设计、编制和调试操作系统模块的能力。
2.问题描述
设计一个进程动态请求资源的模拟系统,实现随机产生进程请求资源的数量;资源安全性检查算法;资源的分配算法;以及输出显示每次请求的结果和系统资源的状态。
3.需求分析
3.1数据需求
字符范围:0,1,2……n
3.2基本功能需求
为进程随机产生请求资源的数量,系统通过资源安全性检查,检查是否满足安全要求。若安全,则才分配资源;不安全时,系统恢复申请前的状态;只有当进程满足全部的资源需求时,该进程执行结束,释放所占的资源。
3.3非功能性需求
用户界面需求:简洁、易用、易懂、友好的用户界面。 硬件需求:Windows 7系统,VC++6.0开发工具。
4.概要设计
4.1数据结构
主要用到的数据结构: (1) 最大需求矩阵Max[][] (2) 已分配矩阵Allocation[][]
(3) 仍需求矩阵Need[][]=Max[][]-Allocation[][]
1
西安建筑科技大学华清学院课程设计(论文)
(4) 可利用资源向量Available[] (5) 申请各类资源向量Request[] (6) 工作向量 work[] , Finish[]
4.2系统功能模块介绍
4.2.1数据定义
int Max[MaxResource]
int Allocation[MaxResource] int Need[MaxResource] 4.2.2试分配资源
据用户输入的数据进行试分配 4.2.3输出矩阵
据输入数据输出对应矩阵,并计算出需求矩阵 4.2.4安全性检测
进程间是安全的时候则可以输出相应的安全序列。如果错误,则可以回到数据的初始化状态
4.3系统功能模块图 银行家算法
数据定义 试分配 输出矩阵 安全性检测 图4.3-1 功能模块图
5.详细设计
5.1系统函数详细介绍
int Max[MaxResource]
// 表示某个进程对某类资源的最大需求
int Allocation[MaxResource] // 表示某个进程已分配到某类资源的个数 int Need[MaxResource] // 表示某个进程尚需要某类资源的个数 int mark[MaxResource] //在使用FreeRecourse是以确定是否释放资
2