银行家算法报告

上传人:仙*** 文档编号:33229439 上传时间:2021-10-16 格式:DOC 页数:9 大小:83.51KB
收藏 版权申诉 举报 下载
银行家算法报告_第1页
第1页 / 共9页
银行家算法报告_第2页
第2页 / 共9页
银行家算法报告_第3页
第3页 / 共9页
资源描述:

《银行家算法报告》由会员分享,可在线阅读,更多相关《银行家算法报告(9页珍藏版)》请在装配图网上搜索。

1、操作系统实验报告 银行家算法班级:计1009 学号:20101221138姓名:*二零一二年十二月一、实验目的 通过一个简单的共享资源分配与银行家算法的实现,加深对其中安全性算法的了解。二 、实验内容 问题描述本题主要内容是模拟实现资源分配。银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。通过对这个算法的设计,让学生能够对书本知识有更深的理解,在操作和其它方面有更高的提升。基本要求 具体用银行家算法实现资源分配。要求如下:(1) 设计一个3个并发进程共享3类不同资源的系统

2、,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。(2) 设计用银行家算法 ,实现资源分配 ,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。(3) 确定一组各进程依次申请资源数的序列, 输出运行结果。方案设计及开发过程1银行家分配算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循

3、环等待资源,每个进程都无法继续执行下去的死锁现象。把个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,每个进程的资源需求总量不能超过系统拥有的资源总数, 银行算法进行资源分配可以避免死锁.2.算法描述银行家算法: 设进程I提出请求RequestN,则银行家算法按如下规则进行判断。 (1)如果RequestN=NEEDI,N,则转(2);否则,出错。 (2)如果RequestN=AVAILABLE,则转(3);否则,出

4、错。 (3)系统试探分配资源,修改相关数据: AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 3安全性检查 (1)设置两个工作向量WORK=AVAILABLE;FINISHM=FALSE (2)从进程集合中找到一个满足下述条件的进程, FINISHi=FALSE NEED=WORK 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 WORK=WORK+

5、ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的进程FinishM=true,则表示安全;否则系统不安全。 3.数据结构假设有M个进程N类资源,则有如下数据结构:#define W 10#define R 20int M ; /总进程数int N ; /资源种类 int ALL_RESOURCEW; /各种资源的数目总和int MAXWR; /M个进程对N类资源最大资源需求量int AVAILABLER; /系统可用资源数int ALLOCATIONWR;/M个进程已经得到N类资源的资源量int NEEDWR; /M个进程还需要N类资源的资源量int Request

6、R; /请求资源个数三、程序和运行情况 #include#includeint M=3; /进程的个数int N=3; /资源的种类int all_resourceR=15,20,25; /3类资源的总量int max33=10,10,10,8,8,8,5,5,5; /进程的最大需求量int allocation33=5,5,7,6,6,6,1,2,4; /进程已分配的资源量int need33=5,5,3,2,2,2,4,3,1; /进程的需求量int available3=3,7,8; /还可分配的资源int request3; /进程的请求量int k; /将输入请求的进程名赋予kint

7、 temp3;/存放安全序列/函数声明void intput();void first();int inrequest();void safe();void safe() /安全性算法int i=0,p=0;int apply;int h;int Finish3=0; /进程的状态标志int flag=0; /记录进程的标记位是否可以全部转为trueint work3;for(int q=0;q3;q+) /将可用资源赋给work数组workq=availableq;while(iM)apply=0;for(int j=0;j3;j+) if(Finishi=0 & needij=workj)

8、 /判断进程的状态,需求量和可用资源的比较apply+;if(apply=3) /若进程的三类资源都小于可用资源时for(int m=0;m3;m+) /将分配给该进程的资源回收workm=workm+allocationim;Finishi=1; /将进程的状态置为1tempp=i; /将进程号放入安全序列数组i=0;p+; /将安全序列数组的指针后移elsei=i+1;for(i=0;iM;i+)if(Finishi=0) /判断是否所有进程都可分配资源完成flag+;if(flag!=0) /若不是所有进程都可完成printf(分配后系统不安全,不予分配!n);for(i=0;iN;i+

9、)availablei=availablei+requesti;allocationki=allocationki-requesti;needki=needki+requesti;printf(是否重新提出要求:1、是 2、否n);scanf(%d,&h);if(h=1)first();elseexit(0);else /若是所有进程都可完成printf(系统是安全的!n);printf(安全序列为:);for(i=0;i3)printf(没有该进程!);return -1;k-;if(request0=needk0) & (request1=needk1) & (request2=needk

10、2)/请求量和需求量的比较if(request0=available0) & (request1=available1) & (request2=available2)/请求量和可用资源的比较for(int i=0;i3;i+)availablei=availablei-requesti;allocationki=allocationki+requesti;needki=needki-requesti;return 1;elseprintf(请求量大于可用资源量n);return -1;elseprintf(请求量大于需求量n);return -1;void first()int a;a=inrequest();if(a=1)safe();void main()printf(三类资源的总量为:(%d,%d,%d)n,all_resource0,all_resource1,all_resource2);for(int i=0;i3;i+)printf(第%d个进程三类资源的需求量为:(%d,%d,%d)n,i+1,needi0,needi1,needi2);first();运行情况如下:先输出所有资源的总量和各个进程对资源的需求量:当输入的资源请求量大于需求量时:当假设分配后系统仍属于安全时:

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!