操作系统-银行家算法-资源分配_第1页
操作系统-银行家算法-资源分配_第2页
操作系统-银行家算法-资源分配_第3页
操作系统-银行家算法-资源分配_第4页
操作系统-银行家算法-资源分配_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、操作系统一银行家算法一资源分配江苏师范大学一操作系统实验一、实验名称:资源分配管理二、实验目的模拟实现银行家算法,用银行家算法实现资源分配和安全性检查。通过本次实 验,使学生加深对死锁概念的理解和掌握,并培养学生对操作系统开发的兴趣与应 用能力。三、实验内容设计五个进程P0,P1,P2,P3,P4)共享三类资源A,B,C的系统,A,B,C的资源数量分别为10,5, 7。进程可动态地申请资源和释放资源,系统按各进 程的申请动态地分配资源。在T0时刻的资源分配情况如下图所示:程 7a a cA H CNl1! A B GAwiLnbl*若进程P1请求资源,发出请求向量Request1(1,0,2)

2、,编写程序用银行 家算法判断系统能否将资源分配给它; 若进程P2提出请求Request2(0,1,0),用银行家算法程序验证系统能否 将资源分配给它。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列。/VC 6.0调试通过:ABCPnPi?5322?a22Z12J|51000QE2】10D2? & m1 ; 2 e c oa j i4 3 Lp 3 2时刻的宣裙分能表#include #include using namespace std;/各种资源关系的数组int MAX53 = 7,5,3,3,2,2,9,0,2,2,2,2,4,3,3;int Allocation53 =

3、0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;int Need53 = 7,4,3,1,2,2,6,0,0,0,1,1,4,3,1;int max53;int allocation53;int need53;int a=0,b=0,c=0;int flag=1;/记录安全序列int safe5 = 0,0,0,0,0,temp=0; /初始化函数。int Init()(a=3;b=3;c=2;for (int i=0;i5;i+)for(int j=0;j3;j+)(needij=Needij;maxij=MAXij;allocationij=Allocationij;retur

4、n 0;试分配资源int Try_request(int i,int A,int B,int C)(if(A=a)&(B=b)&(C=c)&(A=Needi0)&(B=Needi1)&(C=Needi2)(Allocationi0=Allocationi0+A;Allocationi1=Allocationi1+B;Allocationi2=Allocationi2+C;Needi0=Needi0-A;Needi1=Needi1-B;Needi2=Needi2-C;a=a-A;b=b-B;c=c-C;return 1;elsereturn 0;资源分配。int Request(int i)(i

5、f(Needi0=a)&(Needi1=b)&(Needi2=c)(a=Allocationi0+a;b=Allocationi1+b;c=Allocationi2+c;return 1;elsereturn 0;显示函数。void display(int i)(if(i=5)cout Pi MAXi0 MAXi1 MAXi2Allocationi0 Allocationi1Allocationi2 Needi0 Needi1Needi2a b cendl;恢复原来的数据。void Recovery()(for(int i=0;i5;i+)for(int j=0;j3;j+)(Needij=n

6、eedij;MAXij=maxij;Allocationij=allocationij; a=3;b=3;c=2;flag=1;temp=0;for( i=0;i5;i+)safei=0;void runing()(cout进 程 Max Allocation Need Availableendl;cout进程名 A B C A B C A B C A B C 0)(for(int i=0;i5;i+)(if(safei=0)&(Request(i)=1) /资源分配成功,并且已经分配(temp+; safei=temp;flag+;/如果分配则标志改变,不为1.display(i);if(f

7、lag=1) 标志,已经没有未分配的进程或无法完成分配(for(int i=0;i5;i+)(if(safei=0)flag+;coutPi这个进程未分配资源endl; /如果存在未分配资源。则改变标志flagif(flag=1)(cout存在安全序列,其中的一个安全序列是:;for (int i=0;i=5;i+)for(int j=0;j5;j+)(if(safej=i)coutPj ;coutendl;flag=0; /flag=0 退出 while。elsecout 不存在安全序列 endl;flag=0;elseflag=1;int main()(Init();while(1)(cout请

温馨提示

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

评论

0/150

提交评论