资源描述:
《银行家算法实习报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、操作系统原理上机报告院系:计算机学院班级:191092姓名:学号:20091000761二O一一年六月实验一简要说明一.银行家算法简介银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待实现银行家算法,系统必须设置若干数据结构。 要解释银行家算法,必须先解释操作系统安全状态和不安全状态。 安全序列是指一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有
2、进程Pj(j
3、ilable[3]={2,3,3};p[n]={0,0,0,0,0};Allocation是指占有的资源数目,Need是指还需要的资源数目,Reqeust是请求的资源数目,Available是指可以提供的资源数目,p[]表示各个进程的状态。三.流程图开始输入需申请资源的进程号请求数组(即所需要的资源)<=?进程阻塞是请求向量与可利用资源量比较<=?否是拟分配执行安全性算法安全?新状态稳定,资源实际分配撤销分配否是四.设计思想在实现过程中,首先是将请求资源与need和available相比较,来确定请求的资源是否超过现有的资源,或者请求了本身不需要的那么多的资源,如果
4、是的话,就终止,打印出“进程阻塞”,不是的话,接着进行,首先试分配相关资源————即将进程请求的资源给该进程,并且修改相关的参数,包括need,available,acclation,然后,利用一个while循环,进行对各个进程的安全状态检查,检查的主要方式就是,如果available能满足该进程的need,就分配,然后修改available的相关参数,不能的话,就进行下一个进程的检测,如果都不能满足的话,就结束,输出“进程阻塞”,以上就是整个程序设计的主要思想。相面附上程序,以及程序的运行截图:五.程序清单#include#definen5//进
5、程个数#definem3//资源种类voidmain(){/*分配矩阵Allocation[i](4)需求矩阵Need[i](5)请求矩阵Request[i]*/intAllocation[n][m]={{2,1,2},{4,0,2},{3,0,5},{2,0,4},{3,1,4}};intNeed[n][m]={{3,4,7},{1,3,4},{0,0,3},{2,2,1},{1,1,0}};intReqeust[m];intAvailable[3]={2,3,3};intp[n]={0,0,0,0,0};//intk,h;inta,i,j,x=5,y=0,k=0
6、;printf("请输入请求的序号!");scanf("%d",&a);a=a-1;printf("请输入资源要求!");for(i=0;iNeed[a][i]
7、
8、Reqeust[i]>Available[i]){printf("该进程阻塞1!");return;}//printf("检测无误,准备试分配!");////试分配for(i=0;i9、;Allocation[a][i]=Allocation[a][i]+Reqeust[i];Need[a][i]=Need[a][i]-Reqeust[i];//printf("%d%d%d",Available[i],Allocation[a][i],Need[a][i]);}while(x!=1&&y<2){y++;for(i=0;iAvailable[j])break;if(j==m){//printf("%d%d",x,j);for(j