操作系统银行家算法(避免死锁)实验报告_操作系统死锁实验报告
操作系统银行家算法(避免死锁)实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统死锁实验报告”。
操作系统实验:银行家算法
姓名:李天玮
班级:软工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示?";