操作系统课设电子稿

操作系统课设电子稿

ID:13261183

大小:928.50 KB

页数:10页

时间:2018-07-21

操作系统课设电子稿_第1页
操作系统课设电子稿_第2页
操作系统课设电子稿_第3页
操作系统课设电子稿_第4页
操作系统课设电子稿_第5页
资源描述:

《操作系统课设电子稿》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.课题简介银行家算法是避免死锁的一种重要方法,本课程设计要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。死锁的产生,必须同时满足四个条件,即一个资源每次只能由一个进程占用:第二个为等待条件,即一个进程请求资源不能满足时,它必须等待,但它仍继续保持已得到的所有其他资源:第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源。防止死锁的机构只能确保上述四个条件之一不出现,则系

2、统就不会发生死锁。通过这个算法可用解决生活中的实际问题,如银行贷款等.通过对这个算法的设计,让学生能够对书本知识有更深的理解,在操作和其它方面有更高的提升.二.程序总体设计随机分配算法:当进程申请资源时,如果系统中现存资源数能满足进程的当前资源申请量,就把资源能会产生死锁。随机分配算法很容易进入死锁.银行家分配算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,

3、系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,各进程都无法继续执行下去的死锁现象。把各进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,,每个进程的资源需求总量不能超过系统拥有的资源总数,银行算法进行资源分配可以避免死锁.三

4、.算法的分析与设计模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成:第一部分:银行家算法(扫描)1.如果Request<=Need,则转向2;否则,出错2.如果Request<=Available,则转向3,否则等待3.系统试探分配请求的资源给进程AVAILABLE=AVAILABLE-REQUESTALLOCATION=ALLOCATION+REQUESTNEED=NEED-REQUEST4.系统执行安全性算法第二部分:安全性算法1.设置两个向量(1).工作向量:Work=Avai

5、lable(表示系统可提供给进程继续运行所需要的各类资源数目)(2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False2.若Finish[i]=False&&Need<=Work,则执行3;否则执行4(I为资源类别)3.进程P获得第i类资源,则顺利执行直至完成!并释放资源:Work=Work+Allocation;Finish[i]=true;转24. 若所有进程的Finish[i]=true,则表示系统安全;否则,不安全!银行家算法数据结构:假设有

6、M个进程N类资源,则有如下数据结构:MAX[M*N]M个进程对N类资源的最大需求量AVAILABLE[N]系统可用资源数ALLOCATION[M*N]M个进程已经得到N类资源的资源量NEED[M*N]M个进程还需要N类资源的资源量初始化流程图如下:银行家算法流程图如下:四.程序的描述#include"string.h"#include"iostream.h"#defineM5//总进程数#defineN3//总资源数#defineFALSE0#defineTRUE1//M个进程对N类资源最大资源需求量

7、intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//系统可用资源数intAVAILABLE[N]={3,3,2};//M个进程已经得到N类资源的资源量intALLOCATION[M][N]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//M个进程还需要N类资源的资源量intNEED[M][N]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};intRequest[N

8、]={0,0,0};voidmain()//主函数,实现银行家算法的基本流程{inti=0,j=0;//初始化进程数i和资源数jcharflag='Y';//是否继续进行银行家演示voidshowdata();//显示分配资源后的状态voidchangdata(int);//改变要申请的进程和所对应的资源intchkerr(int);//检测系统是否安全showdata();while(flag=='Y'

9、

10、flag=='y'){i=-1;while(i

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

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

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