预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

[操作系统]银行家算法操作系统实验报告实验目标理解银行家算法。掌握进程安全性检查得方法及资源分配得方法.加深了解有关资源申请、避免死锁等概念.体会与了解死锁与避免死锁得具体实施方法。实验要求编写与调试一个系统动态分配资源得简单模拟程序,观察死锁产生得条件,并采用银行家算法,有效得防止与避免死锁得发生。设计思路1、银行家算法在避免死锁得方法中,如果施加得限制条件较弱,有可能获得令人满意得系统性能。在该方法中把系统得状态分为安全状态与不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁.基本思想为:在分配资源之前,判断系统就是否就是安全得;若安全,才分配。它就是最具代表性得死锁算法,具体算法如下表示:假设进程P提出请求Request[i],则银行家算法按如下步骤进行判断:如果Request[i]<=Need[i],则转向2);否则出错。如果Request[i]〈=Available[i],则转向3);否则出错.系统试探分配相关资源,修改相关数据:Available[i]=Available[i]—Request[i];Allocation[i]=Allocation[i]+Request[i];Need[i]=Need[i]—Request[i];系统执行安全性检查,如安全,则分配成立;否则试探性分配资源作废,系统恢复原状,进程进入等待状态.根据以上银行家算法步骤,可得出如下图所示流程图:2、安全性检查算法安全性检查算法主要就是根据银行家算法进行资源分配后,检查资源分配后得系统状态就是否处于安全状态之中。具体算法如下所示:设置两个工作向量Work=Available,Finish=false;从进程集合中找到一个满足下述条件得进程;Finish=false;Need<=work;如果能够找到该进程,则执行3),否则,执行4);假设上述找到得进程获得资源,可顺利执行,直至完成,从而释放资源。Work=Work+Allocation;Finish=true;Goto2);如果所有进程得Finish=true,则表示该系统安全,否则系统不安全,请求被拒。根据以上安全检查算法步骤,可得出如下图所示流程图:主要数据结构#include〈iostream、h〉////////////////////////////////////////////////////////////////////////////全局变量定义intAvailable[100];//可利用资源数组intMax[50][100];//最大需求矩阵intAllocation[50][100];//分配矩阵intNeed[50][100];//需求矩阵intRequest[50][100];//M个进程还需要N类资源得资源量intFinish[50];intp[50];intm,n;//M个进程,N类资源主要代码结构///////////////////////////////////////////////////////////////////////////安全性算法intSafe(){inti,j,l=0;intWork[100];//可利用资源数组for(i=0;i<n;i++)ﻩWork[i]=Available[i];for(i=0;i〈m;i++)ﻩFinish[i]=0;for(i=0;i〈m;i++)ﻩ{if(Finish[i]==1)ﻩcontinue;ﻩelseﻩﻩ{ﻩfor(j=0;j〈n;j++)ﻩﻩ{if(Need[i][j]>Work[j])ﻩﻩbreak;ﻩ}ﻩﻩif(j==n)ﻩ{ﻩﻩFinish[i]=1;ﻩﻩfor(intk=0;k<n;k++)Work[k]+=Allocation[i][k];ﻩﻩﻩp[l++]=i;ﻩi=—1;ﻩ}ﻩelsecontinue;ﻩ}if(l==m){ﻩﻩcout〈〈"系统就是安全得"<〈'\n';ﻩﻩcout<〈"系统安全序列就是:\n";ﻩfor(i=0;i〈l;i++)ﻩﻩ{ﻩﻩﻩcout〈<p[i];ﻩﻩﻩﻩif(i!=l-1)ﻩcout〈<”——〉”;}ﻩﻩcout〈〈'\n';ﻩreturn1;ﻩ}}}///////