ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:53.34KB ,
资源ID:20902261      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20902261.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行家算法实验报告35989Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行家算法实验报告35989Word文件下载.docx

1、操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。银行家算法是一种最具代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统的安全状态和不安全状态。安全状态:如果存在一个由系统中所有进程构成的安全序列P1,Pn,

2、则系统处于安全状态。安全状态一定没有死锁发生。不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。安全序列:一个进程序列P1,Pn是安全的,如果对于每个进程Pi(0in),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(ji)当前占有资源量之和。先对系统从源文件中读取的数据进行安全性判断,然后对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,不大于系统可利用的资源。若请求合法,则进行试分配,最后对试分配状态调用安全性算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。五、详细设计1、初始化由用户输入数据,分别对可利用资源向量矩阵AVAILABL

3、E、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。2、银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。设进程cusneed提出请求REQUEST i,则银行家算法按如下规则进行判断。(1)如果REQUEST cusneed i= NEEDcusneedi,则转(2);否则,出错。(2)如果REQUEST cusneed i= AVAILABLEcusneedi,则转

4、(3);(3)系统试探分配资源,修改相关数据: AVAILABLEi-=REQUESTcusneedi; ALLOCATIONcusneedi+=REQUESTcusneedi; NEEDcusneedi-=REQUESTcusneedi;(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。(5)对于某一进程i,若对所有的j,有NEEDij=0,则表此进程资源分配完毕,应将占用资源释放。3、安全性检查算法(1)设置两个工作向量Work=AVAILABLE;FINISH(2)从进程集合中找到一个满足下述条件的进程,FINISH=false;NEED=Wor

5、k;如找到,执行(3);否则,执行(4)(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。Work+=ALLOCATION;Finish=true;GOTO 2(4)如所有的进程Finish= true,则表示安全;否则系统不安全。4、流程图1、整体流程图2、判断系统的安全性Safe()六、运行结果1、系统不安全的输入(1)、本程序按下图建立.txt源文件,作为程序的初始化输入(2)执行程序,读取源文件,并判断T0时刻所得结果:2.系统安全的输入(3)T0时刻的安全序列(4)不合理的分配输入P1进程Request(2 2 1)与输入P2进程Request(2 2 2)所得请求结果:(5

6、)合理的分配1.存在安全序列:调用Request()函数,测试该函数的可行性,如输入P1进程Request(0 1 2),所得结果:2、不存在安全序列输入P0进程Request(0 2 0),所得结果:七、心得体会本次实验让我对银行家算法和死锁都有了一定的理解。知道了在资源一定的条件下为了让多个进程都能使用资源完成任务,避免死锁的产生可以从一开始就对系统进行安全性检查来判断是否将资源分配给正在请求的进程。但是银行家算法会加大系统的开销。此外,存在以下疑问,在系统不分配进程所请求的资源的时候,是否会将此资源等待,直到拥有足够的资源的时候再来运行?进程会请求资源是指在执行的过程中只有拥有了足够数量

7、的资源才可以执行下去,但是资源有限,进程数又有足够多,我们期望所有进程都可以在最短的时间内执行完。也许可以这样理解。操作系统的基本特征就是并发和共享,系统允许多个进程并发执行,并且共享系统的软、硬件资源。为了最大限度的利用计算机资源,操作系统应采用动态分配的策略,但是这样就容易因资源不足、分配不当而引起“死锁”。本次课程设计就是用银行家算法来避免“死锁”。该算法就是一个资源分配过程,使分配序列不会产生死锁。此算法的中心思想就是,每次分配后总存在着一个进程,如果让它单独的运行下去,必然可以获得它所需要的全部资源,而它结束后可以归还这类资源以满足其他申请者的需要。另外,我知道了在程序进行编写之前,

8、先对程序的要求进行分析,弄清楚程序所需要的功能,然后将每个功能分成一个功能模块即调用函数来实现,无需过多的画蛇添足。8、参考资料【1】计算机操作系统(第三版) 汤小丹、梁红兵、汤子瀛、哲凤屏等 西安电子科技大学出版社 2007-05【2】 C+ Primer中文版(第4版) (美)Stanley B. Lippman等 著 李师贤 等 译. 人民邮电出版社, 2006-03-01【3】 C+ Primer习题解答(第4版) 蒋爱军,李师贤,梅晓勇著 人民邮电出版社 2007-02-01【4】 现代操作系统(原书第3版)塔嫩鲍姆 (Tanenbaum.A.S),陈向群,马洪兵著 机械工业出版社

9、2009-07-01【5】计算机操作系统教程 张尧学,史美林,张高 清华大学出版社 2006-10-01【6】 数据结构(STL框架) 王晓东著 清华大学出版社 2009-09-01【7】计算机操作系统(第三版) 汤子瀛等 西安电子科技大学出版社 2007-05【8】操作系统实验教程基于windows和Linux 秦明等 清华大学出版社 2010-09-01附: 源程序#includestdio.hstdlib.h#define M 10 /最大进程数#define N 3 /系统所拥有的资源类型int MaxMN;/进程对各类资源的最大需求int AllocationMN;/系统已为进程所分

10、配的各类资源数int NeedMN;/运行进程尚需的各类资源数int WorkN;/运行进程时系统所拥有的资源数bool finishM;/表示系统是否有足够的资源分配给进程int AvailableN;/系统可利用的资源数int n_pro=0;/进程的数目int flagM=-1;/用于标记安全序列int Readfile();/从磁盘读文件int Safe1(int flag,int n,int t);/输出所有安全状态void show();int Safe();/判断系统是否处于安全状态int Request();/请求资源分配函数void show() printf( t%-9st

11、%-9st%-9sn,MAXAllocationNeed); tA B CtA B CtA B Cn for(int i=0;in_pro;i+) printf(p%dt%d%4d%4dt,i,Maxi0,Maxi1,Maxi2);%d%4d%4dt,Allocationi0,Allocationi1,Allocationi2);%d%4d%4dn,Needi0,Needi1,Needi2); 系统可利用资源数:n tAtBtCnt%dt%dt%dn,Available0,Available1,Available2);int Readfile()/从磁盘读文件 int i=0,j=0;/i表进

12、程,j表资源 ifstream inFile; /文件 in(test.txt /打开输入文件,按照规定的格式提取线程等信息 for(j=0;j Availablej; in();系统最大资源数: inFile n_pro;当前进程的数目:%dn,n_pro); while(i Maxij; Allocationij; Needij = Maxij - Allocationij; Availablej -= Allocationij; i+; Workj = Availablej;显示初始化资源分配表: show(); return 0;int Safe()/判断系统是否是安全的 int te

13、mpn=n_pro; int i=0,j=0,t=0; for(i=0; finishi=false; while(tempn) for(i=0; if(!finishi) int tp=0;/注释部分用于调试程序/ printf(%dt%d%4d%4dt,i,Work0,Work1,Work2); tp=(Work0=Needi0) & (Work1=Needi1) & (Work2=Needi2); if(tp) finishi=true; for(int j=0; Workj += Allocationij; flagt=i;/ printf(%dtflag%d=%d,i,t,flagt

14、);system(pauseprintf(t+; break; tempn-; if(finishi = false) printf(系统不安全,不存在安全序列nreturn -1;系统是安全的,存在安全序列: Safe1(flag,n_pro,0);int Safe1(int flag,int n,int t) int p,i,j,k; /p为标记 int tempN;/临时数组n; int tp=0; tp=(Work0 if(tp) for(j=0; Workj += Allocationij; flagt=i; p=1; else continue; for(int j=0;t; if

15、(flagt=flagj) for(j=0; Workj -= Allocationij; p=0;break; if(p=1) if(t=n-1) for(k=0;kk+) printf(p%-5d,flagk); printf( else for(k=0; tempk = Workk - Allocationik; Safe1(flag,n,t+1); Workk =tempk; int Request()/进程提出请求后,判断系统能否将资源分配给它 int rq;/下标 int RequestN;请输入需要请求的进程号(04): scanf(%d,&rq);请输入需要请求的资源数(A B

16、 C):%d%d%dRequest0,&Request1,&Request2); if(Needrq0 Request0 | Needrq1 Request1 | Needrq2 Request2)进程p%d申请的资源大于它所需要的资源n分配不合理,不予分配nn,rq); return -1; if(Available0 Request0 | Available1 Request1 | Available2 Request2) 进程p%d申请的资源大于系统现在可利用的资源n分配不合理,不予分配nn for(int j=0; Availablej -= Requestj; Allocationr

17、qj += Requestj; Needrqj -= Requestj;假定系统可为p%d分配,分配后的资源分配表: for(int k=0; Workk = Availablek; if(Safe() 系统进入不安全状态,不予分配nn Availablej += Requestj; Allocationrqj -= Requestj; Needrqj += Requestj;此刻的资源分配表为: show(); else 系统是安全的,以上序列是此刻所存在的安全序列!系统已分配p%d所申请的资源!nnint main() system(color 0Bn 银行家算法 n 学号: n 班级: n 姓名:n从磁盘读取源文件n Readfile();T0时刻的安全性: if(Safe() return -1; while(1) Request();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1