《银行家算法的模拟实现》实验报告
《银行家算法的模拟实现》实验报告
题目银行家算法的模拟实现
专业
班级
组员
指导老师
一、实验目的
死锁会引起计算机工作僵死因此操作系统中必须防止。本实验的目的在于让学生独立的使用高级语言编写与调试一个系统动态分配资源的简单模拟程序了解死锁产生的条件与原因并采用银行家算法有效地防止死锁的发生以加深对课堂上所讲授的知识的理解。
二、实验内容
模拟实现银行家算法实现死锁避免。要求初始数据如系统在T0时刻的资源分配情况、每一种资源的总数量从文本文件读入文件中给出最大需求矩阵Max、分配矩阵Allocatio
在程序中求得需求矩阵Need与可利用资源向量Available。
三、实验分析过程
1、整个银行家算法的思路。
先对用户提出的请求进行合法性检查再进行预分配利用安全性检查算法进行安全性检
查。
1进程一开始向系统提出最大需求量、
2进程每次提出新的需求分期贷款都统计就是否超出它事先提出的最大需求量、
3若正常则判断该进程所需剩余剩余量包括本次申请就是否超出系统所掌握的
剩余资源量若不超出则分配否则等待
2、算法用到的主要数据结构与C语言说明。
1、可利用资源向量INTAVAILABLEMM为资源的类型。
2、最大需求矩阵INTMAXNMN为进程的数量。
3、已分配矩阵
INTALLOCATIONNM
4、还需求矩阵
INTNEEDNN
5、申请各类资源数量i
tRequestx
6、工作向量
i
tWorkx
f《银行家算法的模拟实现》实验报告
7、i
tFi
ishy表示系统就是否有足够的资源分配给进程0为否非0为就是3、银行家算法主程序1、系统初始化。输入进程数量资源种类各进程已分配、还需求各资源数量各资源可用
数量等2、输入用户的请求三元组IJK为进程I申请K个J类资源。3、检查用户的请求就是否小于还需求的数量条件就是KNEEDIJ。如果条件不符则
提示重新输入即不允许索取大于需求量4、检查用户的请求就是否小于系统中的可利用资源数量条件就是KAVALIABLEIJ。
如果条件不符则申请失败阻塞该进程重新进行进程动态资源申请使用goto语句5、进行资源的预分配语句如下
AVALIBLEIJAVALIBLEIJKALLOCATIONIJALLOCATIONIJKNEEDIJNEEDIJK6、系统调用安全性检查算法checksafe函数进行检查如果检查通过则不用回收否则进行回收进程资源申请失败进入等待。4、安全性检查算法checksafe子函数1、设置两个临时变量。FINISHN记录进程模拟执行的结束状态初值为0如果可以模r