银行家算法主要程序段_第1页
银行家算法主要程序段_第2页
银行家算法主要程序段_第3页
银行家算法主要程序段_第4页
银行家算法主要程序段_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验二:

银行家算法实验银行家算法的数据结构◆可用资源向量Available:长度为n的数组表示系统中n类资源的当前可用数目。如果Available[j]=k,表示系统中现有Rj类资源为k个。◆最大需求矩阵Max:m×n矩阵定义m个进程对n类资源的最大需求量。如Max[i,j]=k,表示进程Pi运行期间最多需求Rj资源的数目为k个。◆已分配资源矩阵Allocation:m×n矩阵定义了每个进程现在已分配到的各类资源的实际数目。如果Allocation[i,j]=k,表示进程Pi当前分到k个Rj类资源。◆需求矩阵Need:m×n矩阵表示每个进程还需要的各类资源的数目。如果Need[i,j]=k,表示进程Pi尚需k个Rj类资源才能完成其任务。很显然,Need[i,j]=Max[i,j]-Allocation[i,j],因而,这些数据结构的大小和值会随着时间而改变。淮海工学院计算机科学系银行家算法(资源分配算法)设Requesti表示进程Pi的资源申请向量。如Requesti[j]=k,表示进程Pi动态申请k个Rj类资源。当进程Pi申请资源时,就执行下列动作(试探性分配):①若Requesti[j]>Need[i,j],产生出错条件,因为进程Pi对资源的请求量已超过其说明的最大数量;否则,转到步骤②。②如果Requesti[j]>Available[j],则进程Pi必须等待,这是因为系统现在没有可用的资源;否则,转到步骤③。③如果系统可以给进程Pi分配所请求的资源,则应对有关数据结构进行修改:Available[j]=Available[j]-Requesti[j];(j=1,2,……,n)Allocation[i,j]=Allocation[i,j]

+Requesti[j];(i=1,2,……,m)Need[i,j]=Need[i,j]-Requesti[j];④系统执行安全性检查,查看此时系统状态是否安全。如果安全,就给进程Pi

实际分配资源;否则,即系统是不安全的,则Pi等待,作废本次试探性分配,并且把资源分配状态恢复成③之前的情况。淮海工学院计算机科学系安全检查算法设置两个向量:工作向量Work:表示系统可提供给进程继续运行所需要的各类资源数目,长度为n;进程完成标志向量Finish:长度为m,表示各个进程是否能够得到足够的资源并运行完成。两个向量初始化:Work=Available,Finish[i]=false(i=1,2,…m)。从进程集合中搜寻满足下列条件的进程(找安全进程序列):Finish[i]==false且Need[i,j]≤Work[j]。 如果找到这样的进程,执行③;否则,则转向步骤④。修改数据值:Work[j]=Work[j]+Allocation[i,j](进程Pi释放所占的全部资源);Finish[i]=true; 返回步骤②;安全与不安全判定:如果所有进程的Finish[i]==true都成立(找着安全序列),则系统处于安全状态;否则,系统处于不安全状态。淮海工学院计算机科学系银行家算法主要程序段1、以书上用例初始化数据结构#defineM5#defineN3intavailable[N]={3,3,2};intmax[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};intallocation[M][N]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};intneed[M][N],p[M];银行家算法主要程序段1、以书上用例初始化数据结构#defineM5//总进程数#defineN3//总资源数//M个进程对N类资源最大资源需求量intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//系统可用资源数intAVAILABLE[N]={10,5,7};//M个进程已经得到N类资源的资源量intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};//M个进程还需要N类资源的资源量intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};intRequest[N]={0,0,0};银行家算法主要程序段2、现实资源分配情况voiddisplaydata(){inti,j;cout<<"系统可用的资源数为:"<<endl<<endl;for(j=0;j<N;j++)cout<<"资源"<<j<<":"<<AVAILABLE[j];cout<<endl;cout<<"各进程还需要的资源量:"<<endl<<endl;for(i=0;i<M;i++){cout<<"进程"<<i<<":";for(j=0;j<N;j++)cout<<"资源"<<j<<":"<<NEED[i][j];cout<<endl;}cout<<endl;cout<<"各进程已经得到的资源量:"<<endl<<endl;for(i=0;i<M;i++){cout<<"进程"<<i<<":";for(j=0;j<N;j++)cout<<"资源"<<j<<":"<<ALLOCATION[i][j];cout<<endl;}};银行家算法主要程序段3、进程分配资源的数据更新voidchangedata(intk)//为进程k分配请求的资源数量{intj;for(j=0;j<N;j++){AVAILABLE[j]=AVAILABLE[j]-Request[j];ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];NEED[k][j]=NEED[k][j]-Request[j];}};银行家算法主要程序段4、进程分配资源的数据更新voidrestoredata(intk)//恢复已分配的数据为分配前状态

{

intj;

for(j=0;j<N;j++)

{

AVAILABLE[j]=AVAILABLE[j]+Request[j];

ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j];

NEED[k][j]=NEED[k][j]+Request[j];

}};

银行法家算威法主像要程强序段5、安航全检码查过牌程中零判断少进程揪需求帅资源农是否扇大于彼现有组资源in尽tco造mp揉ar投e(醉in径tne辅ed冲[垃],in投two建rk盐[欢])塑{in网tj;fo毫r(灶j=0物;j鄙<N;滚j++晃)掘{if千(n乏ee辅d[紫j]>wo虏rk箱[j])婆{话r靠et幸ur勇n边FA傻LS姓E;趟}碗}叹r施et归ur帆n编TR产UE价;纽奉}6、安昌全检饱查程锤序段in绳tis菜Se饭cu弯ri倘ty炸(i债ntav号ai嘱la亡bl束e[虾],冈in无tne勇ed勿[]罢[N避],视in泪tal纯lo艇ca尖ti省on朴[]蕉[N])罢{in沉ti,芹j,砍k=0堵,f迅la纷g,公fi妇ni交sh浇[M若],看wo耻rk斗[N略];fo御r(荣i=0侵;i咱<M;响i++哨)评{fi谁ni芒sh汇[i]=皱FA幅LS吗E;渴}fo凉r(叫j=0挨;j捎<N;秃j++宣)色{wo范rk牧[j]=av豆ai增la踪蝶bl描e[蚂j];齿}wh窄il数e(蓝TR刑UE){//寻找御安全岸进程疼序列fl贪ag斑=F活AL鬼SE丽;fo喇r(印i=0负;i斑<M;揉i++贫){迫//每一艇趟循损环将沟找到挂当前取可分削配资唐源的买进程枪,并督回收蚀其已钩分配垮资源if膏(f剧in闯is惯h[毅i]=栗=FA苹LS抱E&璃&c奸om棒pa纱re锁(n挠ee佳d[轻i]悔,w常or血k)=拔=T因RU浆E){fo镇r(枪j=0同;j绿<N;哀j++茂)wo备rk厌[j]+饱=al尚lo破ca群ti耀on票[i枝][帜j];fi萍ni版sh描[i]=由TR暂UE羡;p[李k++先]=例i;翼fl鞋ag授=T陈RU坡E;消br疫ea挎k;蹈/民/结束FO蚀R循环法,表吩示WO扔RK中资东源满伙足某海一进微程的汤资源饺需求购,并蜂执行wh树il反e}}if恐(f晃la咬g==斩FA咱LS状E)嘴{她//只要氧有一旧个进侦程全断部资仰源得持到满想足,若则继狠续wh签il氏e(醉TR纽奉UE)循环fo锁r(痰i=0士;i悟<M;妨i++昨)体{if吃(f视in乐is件h[昏i]=串=F史

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论