操作系统银行家算法(避免死锁)实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统死锁实验报告”。
操作系统实验:银行家算法
姓名:李天玮
班级:软工1101 实验内容:
在windows系统中实现银行家算法程序。
学号:201126630117 实现银行家算法所用的数据结构:
假设有5个进程3类资源,则有如下数据结构: 1.MAX[5,3] 5个进程对3类资源的最大需求量。2.AVAILABLE[3]系统可用资源数。
3.ALLOCATION[5,3]5个进程已经得到3类资源的资源量。4.NEED[5,3]5个进程还需要3类资源的资源量。
银行家算法:
设进程1提出请求Request[N],则银行家算法按如下规则进行判断。(1)如果Request[N]
AVALIABLE=AVALIABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
安全性检查:
(1)设置两个工作向量WORK=AVAILABLE;FINISH[M]=FALSE.(2)从晋城集合中找到一个满足下述条件的进程,FINISH[i]=FALSE NEED
(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。
WORK=WORK+ALLOCATION FINISH[i]=TRUE GOTO(2)
(4)如所有进程FINISH[M]=TRUE,则表示安全;否则系统不安全。
1.用init()函数对于数据的初始化
关键代码:
#define M 5 #define N 3
void init(){
cout
} cout
{ } cin>>AVAILABLE[j];for(int j=0;j>MAX[i][j];} //cout
cout
for(int i=0;i
} cout
} for(int j=0;j>NEED[i][j];} //cout>ALLOCATION[i][j];} //cout
}// Stack around the variable 'AVAILABLE' was corrupted.显示数据详细信息
进行测试 输入一号进程号,并给需要申请资源设定为{1,0,2}
检验错误输入时候的报错信息
检验当再次申请0号资源并申请资源数目为{0,2,0}时,系统提示系统不安全申请不成功。
每当验证申请成功后会进行的修改操作:
if(flag=='Y'||flag=='y')//进?行D数簓据Y修T改?
{ changdata(i);
}
} if(chkerr(0)){
} else showdata();rstordata(i);showdata();else showdata();cout>flag;退?出?演Y示?";
计算机操作系统实验报告题 目 利用银行家算法避免死锁一、实验目的:1、加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。2、要求编写和调试......
实验目的银行家算法是避免死锁的一种重要方法。通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁......
模拟通过银行家算法避免死锁一、银行家算法产生的背景及目的1:在多道程序系统中,虽然借助于多个进程的并发执行来改善系统的利用率,提高系统的吞吐量,但可能发生一种危险—死锁......
实验四死锁一、实验目的 当系统的总资源数m小于或等于所有进程对对资源的最大需求时,就可能产生 死锁。死锁会引起计算机系统的瘫痪。银行家算法是在实现资源分配时避免死锁......
操作系统实验三:银行家算法的实现一、基本信息:a) 实验题目:银行家算法的实现 b) 完成人姓名:韩璐璐 c) 学号:71114115 d) 报告日期:2016.5.27二、实验目的通过实验,加深对多实例......