logo资料库

系统软件综合训练——银行家算法.docx

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
1.概述
2.系统软件综合训练任务及要求
2.1设计任务
2.2设计要求
2.3设计分析
3.详细设计
3.1相关数据结构及定义
3.1.1数据结构
3.1.2 函数定义
3.2层次图
3.3子模块流程图
3.3.1随机生成模块
3.3.2分配模块
3.3.3监控模块
3.3.4回收模块
4.各模块及其分析
4.1总体思想
4.2使用的全局变量
4.3初始化模块
4.3.1功能
4.3.2模块代码
4.4初始化结果写文档模块
4.4.1功能
4.4.2模块代码
4.5 请求资源模块
4.5.1功能
4.5.2模块代码
4.6 DFS搜索所有安全序列模块
4.6.1功能
4.6.2模块代码
4.7 对安全序列排序模块
4.7.1功能
4.7.2模块代码
4.8安全序列写文本模块
4.8.1功能
4.8.2模块代码
5.程序设计与实现
5.1程序说明
5.2实验结果
6.收获、体会和建议
目 录 1.概述 ......................................................... - 3 - 2.系统软件综合训练任务及要求 ................................... - 3 - 2.1 设计任务 .................................................. - 3 - 2.2 设计要求 .................................................. - 3 - 2.3 设计分析 .................................................. - 4 - 3.总体设计 ..........................................错误!未定义书签。 4.详细设计 ..................................................... - 4 - 4.1 相关数据结果及定义 ........................................ - 4 - 4.1.1 变量定义 .............................................. - 4 - 4.1.2 函数定义 ............................................. - 4 - 4.2 层次图 .................................................... - 5 - 4.3 子模块流程图 .............................................. - 6 - 4.3.1 随机生成模块 .......................................... - 6 - 4.3.2 分配模块 .............................................. - 7 - 4.3.3 监控模块 .............................................. - 9 - 4.3.4 回收模块 ............................................. - 10 - 5.各模块及其分析 .............................................. - 10 - 5.1 总体思想 ................................................. - 10 - 5.2 使用的全局变量 ........................................... - 11 - 5.3 初始化模块 ............................................... - 11 - 5.3.1 功能 ................................................. - 11 - 5.3.2 模块代码 ............................................. - 11 - 5.4 初始化结果写文档模块 ..................................... - 12 - 5.4.1 功能 ................................................. - 12 - 5.4.2 模块代码 ............................................. - 12 - 5.5 请求资源模块 ............................................ - 13 - 5.5.1 功能 ................................................. - 13 - - 1 -
5.5.2 模块代码 ............................................. - 13 - 5.6 DFS 搜索所有安全序列模块 ................................. - 15 - 5.6.1 功能 ................................................. - 15 - 5.6.2 模块代码 ............................................. - 15 - 5.7 对安全序列排序模块 ...................................... - 17 - 5.7.1 功能 ................................................. - 17 - 5.7.2 模块代码 ............................................. - 17 - 5.8 安全序列写文本模块 ....................................... - 17 - 5.8.1 功能 ................................................. - 17 - 5.8.2 模块代码 ............................................. - 17 - 6.程序设计与实现 .............................................. - 18 - 6.1 程序说明 ................................................. - 18 - 6.2 实验结果 ................................................. - 18 - 7.收获、体会和建议 ............................................ - 21 - - 2 -
1.概述 当系统在进行资源管理时,如果对进程申请的资源分配不当,可能会使系统 进入死锁状态,因而后面到来的进程也无法顺利执行。银行家算法中,要对当前 申请资源的进程申请资源的数目进行判断,如果可以试分配,则试求出一个安全 序列,如果可以求出,则说明给这个进程分配资源后系统不会进入不安全状态, 将该进程申请的资源分配给他,若求不出安全序列,则说明将资源分配给该进程 后系统会进入不安全状态,所以就使该进程进入阻塞状态,等待以后可以分配资 源时再执行该进程,然后系统继续服务其他进程。通过这样一个过程,可以有效 避免系统进入死锁状态。 2.系统软件综合训练任务及要求 2.1 设计任务 设计一个界面友好,n 个客户(n=身份证前两位+身份证第三、四位+生日月 份),m 类资源(m=身份证前两位+身份证第三、四位+生日日份)的银行家算法。 其中每个客户最大资源初始值、已分配资源、需求资源随机生成。生成尽可能多 的安全序列,并从资源利用效率方面给出这些安全序列的排序(资源利用效率为 运行一条安全序列所需时间)。 2.2 设计要求 2.2.1 在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位, 以软件工程为方法指导,先确定选题需求,进行选题设计。 2.2.2 设计系统的数据结构、算法和程序结构,设计每个模块的处理流程。要求 设计合理,界面友好。 2.2.3 编程序实现选题的系统功能,要求尽可能实现可视化的运行界面,界面应 清楚地反映出系统的运行结果。 2.2.4 确定测试方案,选择测试用例,对系统进行测试。 2.2.5 运行系统并通过验收,讲解运行结果,说明系统的详细功能和设计思路, 并回答指导教师与同学们的问题。 2.2.6 提交系统软件综合训练设计报告。 - 3 -
2.3 设计分析 在避免死锁的算法中,允许进程动态的申请资源,系统在进行资源分配之前, 先计算资源分配的安全性。若此次分配不会使系统进入不安全状态,便将资源分 配给该进程,否则进程等待。 所谓安全状态就是指系统能按照某种顺序来为用户分配资源,使每个用户都 能顺利执行。若系统不存在这样一个安全序列,那么系统进入不安全状态。 3.详细设计 该部分主要包括相关的变量与函数定义,以及各模块的程序流程图。 3.1 相关数据结构及定义 3.1.1 数据结构 //预定义的最大客户数 //预定义的最大资源类别数 #define N 100 #define M 100 int CustomerNum;// 输入客户数 int ResourseNum;//输入资源类别数 int Available[M];//可利用资源数 int Work[M];//工作向量 int Allocation[N][M];//已分配资源数 int Need[N][M];//还需要资源数 int Max[N][M];//最大资源数 long int SafetyList[100000][N+1]; //安全序列存储矩阵,第N+1列存储资源利用率 double CustomerTime[N];//每个用户占用资源时间 bool Finish[N];//完成向量 int Sum = 0;//安全序列计数器 3.1.2 函数定义 (1)void Monitor(int k)//对一个用户利用资源进行监听 (2)void Recycling(int k)//一个客户用完程序之后,回收资源 (3)int SearchAndDistribution(int k)//搜寻下一个可以分配资源的用户 (4)void GetSecuritySequence() - 4 -
//求出安全序列,求存的安全序列用数字的形式保存在_SecuritySequence 二维数组中,所用时间对应保存在_Time数组中 (5)void Sort() //对所求出的安全序列进行时间上的排序,即求出其资源利用率。 (6)void GiveNum() //用于对各个客户所对应的资源数和占用时间进行随机赋值 (7)void GetNumeric()//输出客户的个数和资源的个数 (8)void InterfaceSetup()//界面设置 (9)int SafetyCheck()//安全性检查 3.2 层次图 - 5 -
3.3 子模块流程图 该部分包含随机生成模块、分配模块、监控模块和回收模块四个模块。 3.3.1 随机生成模块 - 6 -
3.3.2 分配模块 - 7 -
- 8 -
分享到:
收藏