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

下载本文档

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

文档简介

1、操作系统大作业-银行家算法编程验证银行家算法1、 实验目的银行家算法是避免死锁的一种重要方法,本设计要求编程实现银行家算法程序。了解银行家算法运行的规律币,加深对银行家算法的了解。2、 实验原理银行家算法的思路:  1)、进程一开始向系统提出最大需求量.  2)、进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量.  3)、若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待.银行家算法的数据结构.  1)、系统剩余资源量An,其中An表示第

2、I类资源剩余量.  2)、各进程最大需求量,Bmn,其中Bji表示进程j对i类资源最大需求.  3)、已分配资源量Cmn,其中Cji表示系统j程已得到的第i资源的数量.  4)、剩余需求量.Dmn,其中Dji对第i资源尚需的数目.银行家算法流程:当某时刻,某进程时,提出新的资源申请,系统作以下操作:  1)、判定En是否大于Djn,若大于,表示出错.  2)、判定En是否大于系统剩余量An,若大于,则该进程等待.  3)、若以上两步没有问题,尝试分配,即各变量作调整.

3、0; 4)、按照安全性推测算法,判断,分配过后,系统是否安全,若安全,则实际分配,否则,撤消分配,让进程等待."安全性检测"算法  1)、先定义两个变量,用来表示推算过程的数据.      Fn=An,表示推算过程中,系统中剩余资源量的变化.      Jn=False表示推算过程中各进程是否假设"已完成"  2)、流程:     

4、60;在"剩余"的进程中(在推算)过程中,一些进程假设已完成,查找Djn<=Fn的进程,找到后令Jj=True(假设该进程完成),Fn+Djn(该进程所占资源释放),如此循环执行.若最后,所有的Fn=True(在推算过程中,所有进程均可以完成),则表示(分配过后)系统是安全的,否则系统是不安全的.3、 实验内容在codeblock编译器下编写代码首先现编写一个库文件,定义一个结构体:typedef struct int A; int B; int C;RESOURCE;结构体里面的三个域分别表示三种资源的数量。按书中的数据初速化三个矩阵RESOURCE MaxPROC

5、ESSES_NUMBER = 7,5,3,3,2,2,9,0,2,2,2,2,4,3,3; += res->A;Allocationprocess.B += res->B;Allocationprocess.C += res->C;Needprocess.A -= res->A;Needprocess.B -= res->B;Needprocess.C -= res->C; -= res->A;Allocationprocess.B -= res->B;Allocationprocess.C -= res->C;Needprocess.A

6、+= res->A;Needprocess.B += res->B;Needprocess.C += res->C; <= && Needi.B <= && Needi.C <= ; += Allocationi.B; += Allocationi.C;Finishi = true;safej+ = i;i = -1; && res->B <= Needprocess.B && res->C <= Needprocess.C),Max0.B,Max0.C,Allocati

7、on0.A,Allocation0.B,Allocation0.C,Need0.A,Need0.B,Need0.C,;printf(" P1 %d %d %d %d %d %d %d %d %dn",Max1.A,Max1.B,Max1.C,Allocation1.A,Allocation1.B,Allocation1.C,Need1.A,Need1.B,Need1.C);printf(" P2 %d %d %d %d %d %d %d %d %dn",Max2.A,Max2.B,Max2.C,Allocation2.A,Allocation2.B,Al

8、location2.C,Need2.A,Need2.B,Need2.C);printf(" P3 %d %d %d %d %d %d %d %d %dn",Max3.A,Max3.B,Max3.C,Allocation3.A,Allocation3.B,Allocation3.C,Need3.A,Need3.B,Need3.C);printf(" P4 %d %d %d %d %d %d %d %d %dn",Max4.A,Max4.B,Max4.C,Allocation4.A,Allocation4.B,Allocation4.C,Need4.A,Ne

9、ed4.B,Need4.C);printf("n");int main()intch;printf("检查初始状态:");if (SafeCheck()printf("系统处于安全状态。n");printf("T0时刻的存在安全序列是P%d,P%d,P%d,P%d,P%d。n",safe0,safe1,safe2,safe3,safe4);elseprintf("系统处于不安全状态。程序退出n");goto over;dointprocess;RESOURCEres;Print();printf("请输入数据(如输入0 1 2 3则为P0 1 2 3):");scanf("%d%d%d%d",&process,&,&,&if (request(process,&res)printf("分配成功。n");printf("安全序列是P%d,P%d,P%d,P%d,P%d。n",safe0,safe1,safe2,safe3,safe4);elseprintf("分配失败。n&

温馨提示

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

评论

0/150

提交评论