操作系统银行家算法实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“银行家算法实验报告”。
实验四
死锁
一、实验目的
当系统的总资源数m小于或等于所有进程对对资源的最大需求时,就可能产生 死锁。死锁会引起计算机系统的瘫痪。银行家算法是在实现资源分配时避免死锁的一个著名算法,该算法是在能确保系统处于安全状态时才把资源分配给申请者。通过本实验使学生能进一步理解死锁的概念,并能选择一个算法来避免死锁。
二、实验题目
系统中有m个同类资源被n个进程共享,每个进程对资源的最大需求数分别为S1, S2,…,Sn,且 Max(Si)
三、数据结构
主要数据结构:
Struct aa { void Print();//用于打印输出表格的函数 void Input();//用于输入的函数
void tryfenpei(int i);//试分配函数 void refenpei(int i);//恢复数据函数 void checksafe(int s);//安全检测函数 };
四、银行家算法的流程图 开始初始化资源类数c=3,进程数t=5初始化Available[c],Max[t][c],Allocation[t][c],Need[t][c],Request[c]输入进程数iInt f=0f
五、源代码
#include #include “stdio.h” const unsigned short c = 3;//资源类数 const unsigned short t = 5;//进程数
void Print();//用于打印输出表格的函数 void Input();//用于输入的函数
void tryfenpei(int i);//试分配函数 void refenpei(int i);//恢复数据函数 void checksafe(int s);//安全检测函数
//定义初始化数组 int Available[c], Max[t][c], Allocation[t][c], Need[t][c], Request[c];
int in;//用户选择的进程号
int main(int argc, char *argv[]){ int i;char ch='Y';cout>in){ if(in4){ cout>Request[i]){ if(Request[i]Need[in][i])coutAvailable[i])cout
cout
cout>ch);return 0;}
void Print(){ int i,j;cout0){ cout
void Input(){ for(int j=0;j>Available[j]){ if(Available[j]
{ for(int m=0;m>Max[l][m]){ if(Max[l][m]>Allocation[l][m])if(Allocation[l][m]
void tryfenpei(int i){ for(int f=0;f
//安全检测函数
void checksafe(int s){ int Work, flag, temp[t], i,j,l=0,k=0;bool Finish[t];for(i=0;i
} if(l==5)//一共有三类资源A B C,一条进程下面的安全性检测只检测了A类。如果A类通过了,那么还要判断B类,C类。否则不用 { for(i=0;i
} i=s;//s传递进来赋给i,s是用户输入的进程号(有主函数里的in传递进来)while(i
if(Finish[i]==false&&Need[i][j]“;cout
六、执行结果:
七、实验总结
通过本次实验了解到用银行家算法来预防死锁是可靠的,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。
总之,通过本实验,使我进一步加深理解和掌握银行家算法。
操作系统实验三:银行家算法的实现一、基本信息:a) 实验题目:银行家算法的实现 b) 完成人姓名:韩璐璐 c) 学号:71114115 d) 报告日期:2016.5.27二、实验目的通过实验,加深对多实例......
操作系统实验:银行家算法姓名:李天玮班级:软工1101 实验内容:在windows系统中实现银行家算法程序。学号:201126630117 实现银行家算法所用的数据结构:假设有5个进程3类资源,则有如......
课程设计报告课程设计名称 共享资源分配与银行家算法 系(部)专业班级姓 名学 号指导教师 年 月 日 、目 录一、课程设计目的和意义 ............................................
计算机操作系统实验报告一、实验名称:银行家算法二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并......
计算机操作系统实验报告何美西109253030212一、实验名称:银行家算法二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请......