操作系统 银行家算法文档.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统 银行家算法文档

淮海工学院计算机工程学院 实验报告书 课程名: 《计算机操作系统》 题 目: 实验二 银行家算法 班 级: ^ ^ 姓 名: ^ ^ 评语: 评语: 成绩: 指导教师: 批阅时间: 年 月 日 实验二 银行家算法 实验目的和要求 应用银行家算法验证进程安全性检查及分配资源 编制模拟银行家算法的程序,并以以下例子验证程序的正确性。 实验环境 1.PC微机。 2.Windows 操作系统。 3.C/C++/VB开发集成环境。 实验学时 2学时,必做实验 实验内容和步骤 1)根据算法流程图编制可执行程序 2)用以下两个例子验证程序的正确性。 3)按照上述两个例子,输出执行的结果。 算法流程图 银行家算法: 安全性算法: 【例1】某系统有A、B、C、D这4类资源供5个进程共享,进程对资源的需求和分配情况如下表所示。现在系统中A、B、C、D类资源分别还剩1、5、2、0个,请按银行家算法回答下列问题: ? 进程 已占资源 最大需求数 A B C D A B C D P1 0 0 1 2 0 0 1 2 P2 1 0 0 0 1 7 5 0 P3 1 3 5 4 2 3 5 6 P4 0 6 3 2 0 6 5 2 P5 0 0 1 4 0 6 5 6 ? (1)? 现在系统是否处于安全状态? (2) 如果现在进程P2提出需要(0,4,2,0)个资源的请求,系统能否满足它的请求? 【例2】用银行家算法考虑下列系统状态 : 进程?? 分配矩阵??? 最大需求矩阵?????? 资源总数矩阵 ?A??? 3? 0? 1? 1???????? 4? 1? 1? 1???????? 6? 3? 4? 2 ?B??? 0? 1? 0? 0???????? 0? 2? 1? 2 ?C??? 1? 1? 1? 0???????? 4? 2? 1? 0 ?D??? 1? 1? 0? 1???????? 1? 1? 1? 1 ?E??? 0? 0? 0? 0???????? 2 ?1? 1? 0 问系统是否安全?若进程B请求(0,0,1,0),可否立即分配?此后进程E也请求(0,0,1,0),可否分配给它? 通过运行程序发现,例1当中的系统处于不安全状态,进程P2提出的请求无法实现;例2当中的系统处于安全状态,进程B提出的请求能实现,此后进程E的请求也能实现。 源代码 #includeiostream #define N 20 #define M 20 using namespace std; int f(int a[N][M],int b[N][M],int m,int k) { int j; for(j=0;jm;j++) if(a[k-1][j]b[k-1][j])return 0; return 1; } int g(int a[N][M],int b[],int m,int k) { int j; for(j=0;jm;j++) if(a[k][j]b[j])return 0; return 1; } int h(int a[],int n) { for(int i=0;in;i++) if(!a[i])return 0; return 1; } int p(int a[],int b[N][M],int m,int k) { int j; for(j=0;jm;j++) if(a[j]b[k-1][j])return 0; return 1; } int q(int a[],int b[],int m) { int j; for(j=0;jm;j++) if(a[j]b[j])return 0; return 1; } int safe(int Finish[N],int Work[M],int Need[N][M],int Allocation[N][M],int n,int m) { int i,j,k; int t[N]; for(i=0;in;i++) t[i]=1; cout安全性检查!endl; for(i=0;in;)// 首先找到一个满足条件的进程 { i

文档评论(0)

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

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

1亿VIP精品文档

相关文档