资源描述:
《银行家算法实践报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统课程设计报告——银行家算法姓名:*******学号:***********班级:计算机***班时间:2011/12/2022操作系统课程设计报告——银行家算法目录1实践内容31.1题目31.2实践要求32目的及意义33功能设计、结构设计、核心算法及数据结构33.1功能设计33.2结构设计43.3核心算法及数据结构..........................................64运行环境、调试分析115存在问题、讨论146实践体会及心得............................
2、.......................147总结,包括创新点..................................................15参考文献15附源代码1622操作系统课程设计报告——银行家算法一、实践内容1.题目:银行家算法2.实践要求:设计有n个进程共享m个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;二、目的及意义本次操作系统课程设计的主要任务是进行系统级的程序
3、设计。通过该银行家算法的实践内容,使我们可以更好地掌握操作系统进程与资源调度的实现机理,加深对操作系统的设计和实现思路的理解,培养我们的系统设计和动手能力,学会分析和编写程序。课程设计的实施将使我们在以下几个方面有所收获:(1)加深对银行家算法原理的理解,提高综合运用所学知识的能力;(2)培养我们自主查阅参考资料的习惯,增强独立思考和解决问题的能力;(3)通过课程设计,培养严谨的科学态度。三、功能设计、结构设计、核心算法及数据结构1.功能设计:本银行家算法共有main、SafeCheck、AllocateRes、Req
4、uest、PrintTable、ProbeAlloc、RollBack、welcome、goodbye九个模块,其中main函数调用welcome、SafeCheck、AllocateRes、goodbye五个函数,AllocateRes函数调用PrintTable、Request两个函数,Request调用SafeCheck、ProbeAlloc、RollBack三个函数。下面是八个模块函数的功能介绍:main:主函数,实现银行家算法主要函数调用功能SafeCheck:检查初始状态是否安全以及申请资源后安全检查All
5、ocateRes:分配资源Request:资源分配请求22操作系统课程设计报告——银行家算法PrintTable:打印出资源分配表ProbeAlloc:某一进程申请资源后先进行试探性分配RollBack:若试探分配后进入不安全状态,将分配回滚,回到申请资源前的状态welcome:操作界面开头goodbye:操作界面结尾程序中使用的结构体:typedefstruct{intA;intB;intC;}RESOURCE;RESOURCEClaim[PROCESSES_NUMBER]=//最大需求矩阵{{7,5,3},{3,2
6、,2},{9,0,2},{2,2,2},{4,3,3}};RESOURCEAllocation[PROCESSES_NUMBER]=//已分配资源数矩阵{{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};RESOURCECsubAl[PROCESSES_NUMBER]=//需求矩阵{{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};RESOURCEAvailable={3,3,2};//可用资源向量2.结构设计:22操作系统课程设计报告——银行家算法开始输
7、出界面检查初始状态安全打印现有资源表申请资源输入进程号在0—4之间NY输入三类资源申请量该进程申请资源后系统仍安全分配资源Y输入一个字符退出界面Y是Y或yN结束Y恢复资源NYNN22操作系统课程设计报告——银行家算法3.核心算法及数据结构:1)main函数intmain(){welcome();//界面开头printf("先检查初始状态是否安全。");if(SafeCheck())//如果安全就打印出具体的安全序列{printf("系统处于安全状态。");printf("安全序列是{P%d,P%d,P%d,
8、P%d,P%d}。",safe[0],safe[1],safe[2],safe[3],safe[4]);AllocateRes();//分配资源}else//否则直接退出printf("系统处于不安全状态。程序将退出...");printf("执行完毕");goodbye();//界面结尾return0;//退出程