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

下载本文档

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

文档简介

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

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

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

4、系统试探分配资源,修改相关数据: 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+alloca

5、tion 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 requestr; /请

6、求资源个数 3、 程序及运行情况#include#define false 0#define true 1#define w 10 /进程的最大个数#define r 20 /初始化资源的最大种类个数int m=2 ; /总进程数int n=3 ; /资源种类 char namer; /各资源的名称int maxwr; /m个进程对n类资源最大资源需求量int availabler; /系统可用资源数int allocationwr; /m个进程已经得到n类资源的资源量int needwr; /m个进程还需要n类资源的资源量int requestr; /请求资源个数/int workr; /存

7、放系统可提供资源void show() /显示资源矩阵int i,j;printf(n进程t已占有的资源t还需要的资源t 可用的资源t最大资源需求量n); printf( );for(i=0;i4;i+) for(j=0;jn;j+)printf(%3c ,namej);printf( );printf(n);for(i=0;im;i+)printf( %d ,i);for(j=0;jn;j+)printf(%3d ,allocationij);printf( );for(j=0;jn;j+)printf(%3d ,needij);printf( );for(j=0;jn;j+)printf(

8、%3d ,availablej);printf( );for(j=0;jn;j+)printf(%3d ,maxij);printf(n); bool check()/安全性检查/int workr;int safew;static int p = 0;int i =0, j= 0;/循环控制bool finishw = false,false,false,false,false,false,false,false,false,false;for(i = 0; i m; i+)/外层循环:无论能否运行完毕,从零开始检查,直到都运行完毕或无法都无法执行if(finishi)continue;fo

9、r(j = 0; j availablejbreak;safep+ = i;if(n = j) /i进程可以执行完毕,work = work + allocation,外层从零开始检查finishi = true;/safep+ = i;for(int k = 0; k n; k+)availablek+= allocationik;allocationik=0;printf(第%d进程已经执行完毕,&i);elsecontinue;i = -1;for(int k = 0; k m; k+)/判断是否所有进程都运行完毕if(!finishk)return false;printf(n安全序列

10、:);for(i = 0; i m; i+)printf( %d,safei);printf( );p = 0;return true;void main()int i,j,flag;char ch=y;printf(=银行家算法=nn);printf(*一、请分别输入%d个资源信息*n,n);printf(n);for(i=0;in;i+)printf(请输入第%d个资源的名称:,i);scanf(%s,&namei);printf(请输入第%d个资源的资源量(小于20的数):,i);scanf(%d,&availablei);printf(n);printf(*二、请分别输入%d个进程信息

11、*n,m);printf(n);doflag=0;for(i=0;im;i+)for(j=0;jn;j+)printf(请输入第%d个进程对%c类资源的最大需求量:,i,namej);scanf(%d,&maxij);printf(请输入第%d个进程已分配的%c类资源的数量:,i,namej);scanf(%d,&allocationij);for(i=0;im&flag!=1;i+)for(j=0;javailablej|allocationijmaxij)printf(sorry!您所输入的最大需求量超过系统的资源总量,或者申请的资源大于最大需求量!请重新输入!n);flag=1;elseneedij=maxij-allocationij; /需求的数目=最大需求-已分配availablej=availablej-allocationij; /可分配的数目减去已经分配的数目while(flag);show();while(ch=y|ch=y)printf(*三、请输入请求资源的进程:*n);scanf(%d,&i);doflag=0;for(j=0;jneedij|requestjavailablej)flag=1;printf(申请该类资源大于需求量,请重新输入!n);elseallocationij+=requestj;needij-=r

温馨提示

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

评论

0/150

提交评论