操作系统实验2--银行家算法.doc

操作系统实验2--银行家算法.doc

ID:56523776

大小:358.50 KB

页数:9页

时间:2020-06-27

操作系统实验2--银行家算法.doc_第1页
操作系统实验2--银行家算法.doc_第2页
操作系统实验2--银行家算法.doc_第3页
操作系统实验2--银行家算法.doc_第4页
操作系统实验2--银行家算法.doc_第5页
资源描述:

《操作系统实验2--银行家算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

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

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

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

5、RK=WORK+ALLOCATIONFINISH=TRUEGOTO2(4)如所有的进程Finish[M]=true,则表示安全;否则系统不安全。3.数据结构假设有M个进程N类资源,则有如下数据结构:#defineW10#defineR20intM;//总进程数intN;//资源种类intALL_RESOURCE[W];//各种资源的数目总和intMAX[W][R];//M个进程对N类资源最大资源需求量intAVAILABLE[R];//系统可用资源数intALLOCATION[W][R];//M个进程已经得到N类资源的资源量intNEED[W][R];//M个进程还需要N

6、类资源的资源量intRequest[R];//请求资源个数三、程序及运行情况#include#definefalse0#definetrue1#defineW10//进程的最大个数#defineR20//初始化资源的最大种类个数intM=2;//总进程数intN=3;//资源种类charname[R];//各资源的名称intMAX[W][R];//M个进程对N类资源最大资源需求量intAVAILABLE[R];//系统可用资源数intALLOCATION[W][R];//M个进程已经得到N类资源的资源量intNEED[W][R];//M个进程还需要N类资

7、源的资源量intRequest[R];//请求资源个数//intWork[R];//存放系统可提供资源voidShow()//显示资源矩阵{inti,j;printf("进程t已占有的资源t还需要的资源t可用的资源t最大资源需求量");printf("");for(i=0;i<4;i++){for(j=0;j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。