- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《银行家算法的模拟实现 》
-- 实验报告
题 目 : 银行家算法的模拟实现
专 业 :
班 级 :
组 员 :
指导老师 :
一、实验目的
死锁会引起计算机工作僵死, 因此操作系统中必须防止。 本实验的目的在于让学生独立
的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序, 了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。
二、实验内容
模拟实现银行家算法实现死锁避免。要求:初始数据(如系统在况、每一种资源的总数量)从文本文件读入,文件中给出最大需求矩阵
T0
时刻的资源分配情 Max 、分配矩阵
Allocation
,在程序中求得需求矩阵
Need 和可利用资源向量
Available 。
三、实验分析过程
1、整个银行家算法的思路。
先对用户提出的请求进行合法性检查, 再进行预分配, 利用安全性检查算法进行安全性检查。
1)进程一开始向系统提出最大需求量 .
2)进程每次提出新的需求 (分期贷款 )都统计是否超出它事先提出的最大需求量 .
3)若正常 ,则判断该进程所需剩余剩余量 (包括本次申请 ) 是否超出系统所掌握的剩余资源量 ,若不超出 ,则分配 ,否则等待
2、算法用到的主要数据结构和 C 语言说明。
( 1)、可利用资源向量 INT AVAILABLE[M] M 为资源的类型。
( 2)、最大需求矩阵 INT MAX[N][M] N 为进程的数量。
3)、已分配矩阵INT ALLOCA TION[N][M]
( 4)、还需求矩阵
INT NEED[N][N]
( 5
)、申请各类资源数量
int Request[x]; //
( 6
)、工作向量
int Work[x];
( 7
)、 int Finish[y]; // 表示系统是否有足够的资源分配给进程,
0 为否,非
0 为是
3、银行家算法 (主程序)
1)、系统初始化。输入进程数量,资源种类,各进程已分配、还需求各资源数量,各资源可用数量等
2)、输入用户的请求三元组( I, J, K ),为进程 I 申请 K 个 J 类资源。
( 3)、检查用户的请求是否小于还需求的数量,条件是
K=NEED[I,J] 。如果条件不符则
提示重新输入,即不允许索取大于需求量
( 4)、检查用户的请求是否小于系统中的可利用资源数量,条件是 K=A VALIABLE[I,J]
如果条件不符则申请失败,阻塞该进程,重新进行进程动态资源申请(使用 goto
句)
。
语
5)、进行资源的预分配,语句如下:
AVALIBLE[I][J]= A VALIBLE[I][J]-K ;
ALLOCATION[I][J]= ALLOCATION[I][J]+K ;
NEED[I][J]=NEED[I][J]-K ;
6)、系统调用安全性检查算法(checksafe()函数)进行检查,如果检查通过,则不用回收,否则进行回收,进程资源申请失败进入等待。
4、安全性检查算法( checksafe()子函数)
( 1)、设置两个临时变量。
FINISH[N] 记录进程模拟执行的结束状态,初值为 0,如果可以模拟执行结束,则可设为 1,也可设为其它非零值以表示执行的先后次序。
WORK[M] 记录模拟执行中资源的回收情况,初值为 AVAILABLE[M] 的值。
2)、在进程中查找符合以下条件的进程。条件 1: FINISH[I]=0
条件 2: NEED[I][J] 〈=WORK[J]
3)、如果查找成功则进行资源的模拟回收,语句如下:
WORK[J]=WORK[J]+ALLOCA TION[I][J] ;
FINISH[I]=1 或查找到的顺序号
4)、如果查找不成功,则检查所有进程的FINISH[] ,如果有一个为 0,则系统不为 0,返回不成功标志。否则返回成功标志。
四、系统流程图
开 始
输入资源数 m, 及各类资源总数, 初始化
输入进程数 n,
Y
i≤ n
N
输入进程 i 的最大需求向量
max ≤ 资 源
N
提
示
Y
错
误
i 加 1
初始化 need
Y
所 有 进 程 运 行 Need 矩阵为
结 束
N
任选一个进程作为
该 进 程 的 Need
Y
该进程已运行
向量为0 N
输入该进程的资源请求量
调用银行家算法, 及安全
性算法, 完成分配, 或并
五、程序源代码
#include iostream.h
#includestdio.h
#includestdlib.h
const unsigned short c=3;// 资源类数
const unsigned short t=5;// 进程数
void print();// 用
您可能关注的文档
- (完整word版)《生活与哲学》易混易错知识点.docx
- (完整word版)《电力系统继电保护》课程教学大纲.docx
- (完整word版)《电梯维修与保养技术》教学大纲.docx
- (完整word版)《电视音乐音响》教学大纲.docx
- (完整word版)《电路原理》试卷及答案.docx
- (完整word版)《电路基础》教案.docx
- (完整word版)《病梅馆记》文言知识整理.docx
- (完整word版)《病理生理学》习题集人卫第8版(精心整理).docx
- (完整word版)《登岳阳楼》《与夏十二登岳阳楼》导学案.docx
- (完整word版)《登高》教学设计方案完美版.docx
- 中国国家标准 GB 14287.5-2025电气火灾监控系统 第5部分:测量热解粒子式电气火灾监控探测器.pdf
- 《GB/T 42706.4-2025电子元器件 半导体器件长期贮存 第4部分:贮存》.pdf
- GB/T 42706.4-2025电子元器件 半导体器件长期贮存 第4部分:贮存.pdf
- 中国国家标准 GB/T 42706.4-2025电子元器件 半导体器件长期贮存 第4部分:贮存.pdf
- 中国国家标准 GB/T 19436.2-2025机械电气安全 电敏保护设备 第2部分:使用有源光电保护装置(AOPDs)设备的特殊要求.pdf
- 《GB/T 19436.2-2025机械电气安全 电敏保护设备 第2部分:使用有源光电保护装置(AOPDs)设备的特殊要求》.pdf
- 《GB 27898.4-2025固定消防给水设备 第4部分:消防气体顶压给水设备》.pdf
- GB 27898.4-2025固定消防给水设备 第4部分:消防气体顶压给水设备.pdf
- GB/T 31270.1-2025化学农药环境安全评价试验准则 第1部分:土壤代谢试验.pdf
- 中国国家标准 GB/T 31270.1-2025化学农药环境安全评价试验准则 第1部分:土壤代谢试验.pdf
原创力文档


文档评论(0)