欢迎来到天天文库
浏览记录
ID:55262214
大小:154.50 KB
页数:11页
时间:2020-05-08
《操作系统综合性实验_死锁避免银行家算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、华南农业大学信息(软件)学院《操作系统》综合性、设计性实验成绩单开设时间:2010学年第1学期专业班级学号姓名实验题目死锁避免——银行家算法自我评价这个实验主要是按照课书上银行家算法的思路写出来的。虽然功能比较简单,但是也是经过努力才编写出来的程序,实验报告也写得很认真。对我来说,它是个比较完善的程序。教师评语评价指标:l题目要求完成情况优□良□中□差□l对算法原理的理解程度优□良□中□差□l程序设计水平优□良□中□差□l实验报告结构清晰优□良□中□差□l流程图及内容表述清楚优□良□中□差□l实验总结和分析详尽优□良□中□差□成绩教师签名需求分析1、系统目的:通过编写和调试一个系
2、统动态分配资源的简单模拟程序,观察死锁产生的条件,模拟死锁避免的实现,加深对死锁避免,系统安全状态等的理解,体会和了解死锁和避免死锁的具体实施方法。并采用适当的算法,有效地防止和避免死锁地发生。2、数据:本程序开始运行时,资源全部可用,此处的资源是已经定义好的矩阵内容,运行时,随机产生新的“进程资源需求向量”。3、本题目的简化假设是:(1)程序运行开始时,资源全部可用。资源种类约10种,每种资源数目为1~10。(2)不断随机产生或手工输入新的“进程资源需求向量”,并填写到最大需求矩阵。(3)在各进程的最大需求数量范围内(因此需作是否超出范围的检验),为各进程随机生成或手工输入资源
3、请求。经银行家算法后输出系统是否安全的信息。当一个进程的资源请求全部发完后,认为它结束。一、概要设计1、定义:利用二维数组定义好最大分配需求矩阵、已分配矩阵、现在需求矩阵,用一维数组的形式存放好现可利用矩阵。2、本程序共10个模块,分别如下:(1)生成确定范围内的随机数random_num()(2)初始化数据init0_data()(3)进程请求proc_require0()(4)请求资源超过需求资源over_need()(5)请求资源超过可利用资源over_avail()(6)资源申请成功apply_success()(7)安全性检查check_security()(8)银行家
4、算法主体banker()(9)显示输出output()(10)主函数main()3、各程序模块之间的层次(调用)关系voidbanker(){check_security()}intmain(){init0_data();output();proc_require0();apply_success(over_need(),over_avail())banker();}4、程序模块之间流程图init0_data();output();proc_require0();apply_success(over_need(),over_avail())?banker();output();继
5、续吗?system("pause");noyesyesno三、详细设计1、定义变量:intmax1[5][10]/*最大分配需求矩阵*/intallocation1[5][10]/*已分配矩阵*/intneed1[5][10]/*现在需求矩阵*/intavailable1[10]/*现可利用矩阵*/intmax[20][20],allocation[20][20],need[20][20],available[20];intn_proc;/*进程数*/inttype_src;/*资源种类数*/intrequest[20][20];/*进程请求资源*/intwork[20];/*可
6、供进程继续运行所需资源的向量*/intfinish[20];/*标识是否有足够的资源分配给进程*/intindex[20];/*用于记录进程顺序*/intt=0;/*记录当前的进程数*/intserial_proc=0;/*当前请求进程*/2、初始化数据init0_data()输入值:无返回值:无操作变量:max[i][j];allocation[i][j];need[i][j];available[j];index[i]调用模块:无详细设计:for(范围不超过进程数)for(范围不超过资源种类数)max[i][j]=初始化分配需求矩阵for(范围不超过进程数)for(范围不超过
7、资源种类数)allocation[i][j]=初始化分配矩阵;for(范围不超过进程数)for(范围不超过资源种类数)need[i][j]=初始化需求矩阵for(范围不超过资源种类数)available[j]=初始化可用矩阵for(范围不超过进程数)index[i]=初始化进程顺序3、进程请求proc_require0()输入值:无返回值:无操作变量:serial_proc;tmp;调用模块:无详细设计:if(当前请求进程<0或当前请求进程>进程数){输出错误重新调用}初始化tm
此文档下载收益归作者所有