(完整word版)银行家算法实验报告(C语言版)_第1页
(完整word版)银行家算法实验报告(C语言版)_第2页
(完整word版)银行家算法实验报告(C语言版)_第3页
(完整word版)银行家算法实验报告(C语言版)_第4页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、(完整word版)银行家算法实验报告(c语言版)(完整word版)银行家算法实验报告(c语言版) 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)银行家算法实验报告(c语言版))的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整word版)银行家算法实验报告(c语言版)的全部内容。第 17 页(完整wo

2、rd版)银行家算法实验报告(c语言版)亲爱的读者:本文内容由我和我的同事精心收集整理后编辑发布到文库,发布之前我们对文中内容进行详细的校对,但难免会有错误的地方,如果有错误的地方请您评论区留言,我们予以纠正,如果本文档对您有帮助,请您下载收藏以便随时调用。下面是本文详细内容。最后最您生活愉快 o(_)o 操作系统课程综合性实验报告 姓名: 学号: 2016 年 11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟,进一步理解资源分配的基本概念,加深对资源申请,资源分配(银行家算法)以及系统是否能分配(安全性算法)资源的理解.二、设备与环境1. 硬件设备:

3、pc机一台2。 软件环境:安装windows操作系统或者linux操作系统,并安装相关的程序开发环境,如c c+java 等编程语言环境。三、实验内容用c语言(或其它语言,如java)实现对资源的资源申请与分配;(一)银行家算法(bank()函数):进程i发出请求资源申请, (1)如果request j=needi,j,转向步骤(2),否则认为出错,因为他所需要的资源数已经超过它所宣布的最大值。 (2)如果:request ij#include include math.h#define max_process 50 /最大进程数define max_resource 100/最大资源数def

4、ine false 0define true 1int availablemax_resource=3,3,2;/可利用资源向量int maxmax_processmax_resource=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3;/最大需求矩阵int allocationmax_processmax_resource=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;/分配矩阵int needmax_processmax_resource;/需求矩阵int requestmax_processmax_resource;/进程需要资源数int finishmax_p

5、rocess;int m=5,n=3;void init();int safe();void bank();void init2();void print();void print2();void main() int i; printf(请输入测试数据,按0由用户输入测试数据,按1由系统提供测试数据:n); scanf(%d,i); switch(i) case 0: init(); break; case 1: init2(); break; print(); safe(); bank();void init() int i,j; printf(请输入进程数目:n); scanf(”%d,

6、&m); printf(”请输入资源种类数目:n); scanf(d”,n); printf(”请按顺序输入系统中可利用的每种资源量:n); for(i=0;in;i+) scanf(%d”,availablei); printf(请输入最大需求矩阵:n”); for (i=0;im;i+) for (j=0;jn;j+) scanf(d”,maxij); printf(请输入分配矩阵:n); for (i=0;im;i+) for (j=0;jn;j+) scanf(”d,allocationij); for (i=0;im;i+) for (j=0;jn;j+) needij=maxij-

7、allocationij; if(needij0) printf(”您输入的第%d个进程的d个资源数据有错,请重新输入n,i,j); void init2() int i,j; for (i=0;im;i+) for (j=0;jn;j+) needij=maxijallocationij;void print() int i,j; printf(”最大需求矩阵如下:n”); for(i=0;im;i+) printf(pdt”,i); for(j=0;jn;j+) printf(%dt,maxij); printf(”n); printf(分配矩阵如下:n); for(i=0;im;i+)

8、printf(”pdt”,i); for(j=0;jn;j+) printf(”%dt,allocationij); printf(”n); printf(”需求矩阵如下:n”); for(i=0;im;i+) printf(pdt,i); for(j=0;jn;j+) printf(”%dt,needij); printf(n”); printf(”系统可提供资源如下:n); for(j=0;jn;j+) printf(dt”,availablej); printf(n”);int safe()int i,j,k=0,lm,p; int workn; for (i=0;in;i+) work

9、i=availablei; for (i=0;im;i+) finishi=false; for(i=0;im;i+) if(finishi=true) continue; else for(j=0;j workj)break; if(j=n) for(p=0;pn;p+) workp=workp+allocationip; finishi=true; lk=i; k+; i=-1; else continue; if(k=m) printf(n); printf(*此时刻资源分配情况*n”); printf( 进程 | work | need | allo w+allo finishn”);

10、 for (i=0;in;i+) worki=availablei; for(i=0;im;i+) printf( pd |,li); for(p=0;pn;p+) printf(”%3d ,workp); printf(”|”); for(p=0;pn;p+) printf(3d ”,needlip); printf(”|); for(p=0;pn;p+) printf(”%3d ,allocationlip); printf(|”); for(p=0;pn;p+) printf(”3d ”,allocationlip+workp); printf(|); printf( turen); f

11、or(p=0;pn;p+) workp=workp+allocationlip; if(i=4) return true; else printf(系统不安全n); return false;void bank() int i,number; char answer; while(1) printf(n请输入需申请资源的进程号(第一个进程号为0):n); scanf(%d,&number); printf(请依次输入该进程所需申请的所有资源数目:n); for(i=0;in;i+) scanf(”d,&requestnumberi); for(i=0;ineednumberi) printf(

12、”申请的资源超过还需要的资源,请重新输入n); continue; if(requestnumberiavailablei) printf(申请的资源超过所能提供的资源,请重新输入n); continue; for(i=0;in;i+) availablei=availableirequestnumberi; allocationnumberi=allocationnumberi+requestnumberi; neednumberi=neednumberirequestnumberi; if(safe()printf(”分配成功!n”); else printf(系统无法分配资源!n); f

13、or(i=0;in;i+) availablei=availablei+requestnumberi; allocationnumberi=allocationnumberi-requestnumberi; neednumberi=neednumberi+requestnumberi; printf(”是否继续申请资源?请回答(y,n):n”); scanf(”c,&answer);/清楚回车符 scanf(”c,&answer); if(answer=y | answer=y) continue; else break; 3.实验结果按1由系统提供数据,测试t0时刻的安全性按0由用户输入,测

14、试t0时刻的安全性输入进程号4,申请资源(4,8,9),如图所示,申请失败显示出失败原因,无法分配资源,若需继续分配选择y或y输入进程号1,申请资源(1,0,2),调用安全性算法若符合安全性,找出安全序列并打印出此时系统资源分配情况,显示分配成功!若需继续分配输入y或y,输入其他退出程序4。实验结果分析如上5。实验心得教 师 评 价评定项目abcd评定项目abcd算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月 日结尾处,小编送给大家一段话。米南德曾说过,“学会学习的人,是非常幸福的人”。在每个精彩的人生中,学习

15、都是永恒的主题。作为一名专业文员教职,我更加懂得不断学习的重要性,“人生在勤,不索何获”,只有不断学习才能成就更好的自己.各行各业从业人员只有不断的学习,掌握最新的相关知识,才能跟上企业发展的步伐,才能开拓创新适应市场的需求.本文档也是由我工作室专业人员编辑,文档中可能会有错误,如有错误请您纠正,不胜感激!at the end, xiao bian gives you a passage. minand once said, people who learn to learn are very happy people. in every wonderful life, learning is

16、 an eternal theme。 as a professional clerical and teaching position, i understand the importance of continuous learning, ”life is diligent, nothing can be gained”, only continuous learning can achieve better self. only by constantly learning and mastering the latest relevant knowledge, can employees from all walks of life keep up with the pace of enterprise development and innovate to meet the needs of the market. this document is also edited by my studio professionals, there may be errors in the document, if t

温馨提示

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

评论

0/150

提交评论