OS银行家算法实验报告..doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《操作系统原理》 实验报告 银行家算法实验 专业:计算机科学与技术 学号:200902014012 姓名:杨瑜 实验日期:2012-5-9 一、实验目的 通过实验用编程语言模拟银行家诉法来加强对银行家安全算法的理解和掌握。 二、实验内容 熟悉避免死锁死锁与安全序列的关系银行家算法进程的安全序列1.可利用资源向量Available2.最大需求矩阵Max3.分配矩阵Allocation4.需求矩阵Nee模拟实现银行家算法以避免死锁的出现.分两部分组成:第一部分:银行家算法(扫描) 1.如果Request=Need,则转向2;否则,出错2.如果Request=Available,则转向3,否则等待3.系统试探分配请求的资源给进程4.系统执行安全性算法第二部分:安全性算法1.设置两个向量 (1).工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目) (2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False2.若Finish[i]=FalseNeed=Work,则执行3;否则执行4(I为资源类别) 3.进程P获得第i类资源,则顺利执行直至完成!并释放资源: Work=Work+Allocation; Finish[i]=true; 转24.? 若所有进程的Finish[i]=true,则表示系统安全;否则,不安全!#include stdio.h #define P_NUM 5 #define S_NUM 3 int Max[P_NUM][S_NUM],Allocation[P_NUM][S_NUM],Need[P_NUM][S_NUM]; int Available[S_NUM],Request[S_NUM]; int Work[S_NUM],Finish[P_NUM],CurrentProcessId=-1,Arrange[P_NUM],CurrentId=0; FILE *fpr,*fpw; int times=0; void init() { int i=0,j=0; for(i=0;iP_NUM;i++){ for(j=0;jS_NUM;j++){ scanf(%d,Max[i][j]); } for(j=0;jS_NUM;j++){ scanf(%d,Allocation[i][j]); Need[i][j]=Max[i][j]-Allocation[i][j]; } Finish[i]=0; } for(j=0;jS_NUM;j++){ scanf(%d,Available[j]); } } void allocation() { int j=0,reasonable=1; if(CurrentProcessId-1 CurrentProcessIdP_NUM){ printf(P%d Requests :( ,CurrentProcessId); for(j=0;jS_NUM;j++){ Need[CurrentProcessId][j]=Need[CurrentProcessId][j]-Request[j]; Allocation[CurrentProcessId][j]=Allocation[CurrentProcessId][j]+Request[j]; Available[j]=Available[j]-Request[j]; printf(%d ,Request[j]); if(Need[CurrentProcessId][j]0 || Available[j]0)reasonable=0; } printf()\n); if(reasonable==0){ UnAllocation(); printf(The Request is not reasonable! The below table is same with the top table! \n); } } } int UnAllocation() { int j=0; if(CurrentProcessId-1 CurrentProcessIdP_NUM){ for(j=0;jS_NUM;j++){ Need[CurrentProcess

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档