实习报告书写参考-----银行家算法的实现

实习报告书写参考-----银行家算法的实现

ID:19411422

大小:73.00 KB

页数:9页

时间:2018-10-02

实习报告书写参考-----银行家算法的实现_第1页
实习报告书写参考-----银行家算法的实现_第2页
实习报告书写参考-----银行家算法的实现_第3页
实习报告书写参考-----银行家算法的实现_第4页
实习报告书写参考-----银行家算法的实现_第5页
资源描述:

《实习报告书写参考-----银行家算法的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实习报告书写参考-----银行家算法的实现一、设计目的:熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记忆。二、设计内容  设计一个n个并发进程共享m个系统资源的系统。进程可动态申请资源和释放资源,系统按各进程的申请动态的分配资源。要求采用银行家算法实现。 三、开发环境windows环境,VC6.0平台。四、分析设计<一>实验原理银行家算法是从当前状态出发,逐个按安全序列检查各客户中谁能完成其工作,然后假定其完成工作且归还全部贷款,再进而检查下一个能完成工作的客户。如果所有客户都能完成工作,则找到一个安全序列,银行家才是安全的。与预防死锁的几种方法相比较,

2、限制条件少,资源利用程度提高了。缺点:该算法要求客户数保持固定不变,这在多道程序系统中是难以做到的;该算法保证所有客户在有限的时间内得到满足,但实时客户要求快速响应,所以要考虑这个因素;由于要寻找一个安全序列,实际上增加了系统的开销.Bankeralgorithm最重要的一点是:保证操作系统的安全状态!这也是操作系统判断是否分配给一个进程资源的标准!那什么是安全状态?举个小例子,进程P需要申请8个资源(假设都是一样的),已经申请了5个资源,还差3个资源。若这个时候操作系统还剩下2个资源。很显然,这个时候操作系统无论如何都不能再分配资源给进程P了,因为即使全部给了他也不够

3、,还很可能会造成死锁。若这个时候操作系统还有3个资源,无论P这一次申请几个资源,操作系统都可以满足他,因为操作系统可以保证P不死锁,只要他不把剩余的资源分配给别人,进程P就一定能顺利完成任务。 为什么银行家算法是可行的呢?这里需要严格的证明一下。不管任何时候,操作系统分配资源的时候都可以保证当前接受资源的进程不会陷入死锁,因为操作系统总是可以满足该进程需要的资源的。假设有n个进程{p1,p2,p3,…pn},最后一个分配到资源的是pi,pi还需要mi个资源,假设此时操作系统还有m个资源剩余。那么很显然m>=mi!而且如果之后操作系统又把资源分配给其他进程了,假设是pj,

4、pj还需要mj个资源,同理可知m>=mj!也就是说在所有的进程中,还需要的资源数总是有小于m的!这样就可以保证资源数永远不会为0,即使可能暂时性为0。另外,还需要保证资源数不会减少!而且,所有已经分配到资源的进程总有一天会归还它所拥有的资源!根据操作系统再分配的时候的状态即可判定。<二>程序结构当进程pi提出资源申请时,系统执行下列步骤:(1)若Request[i]≤Need[i],转(2);否则错误返回(2)若Request[i]≤Available,转(3);否则进程等待(3)假设系统分配了资源,则有:Available:=Available-Request[i];

5、Allocation[i]:=Allocation[i]+Request[i];Need[i]:=Need[i]-Request[i]若系统新状态是安全的,则分配完成若系统新状态是不安全的,则恢复原状态,进程等待模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成:第一部分:银行家算法(扫描)1.如果Request<=Need,则转向2;否则,出错2.如果Request<=Available,则转向3,否则等待3.系统试探分配请求的资源给进程4.系统执行安全性算法第二部分:安全性算法1.设置两个向量(1).工作向量:Work=Available(表示系统可

6、提供给进程继续运行所需要的各类资源数目)(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,则表示系统安全;否则,不安全!<三>数据结构:假设有M个进程N类资源,则有如下数据结构:MAX[M*N]M个进程对N类资源的最大需求量AVAILA

7、BLE[N]系统可用资源数ALLOCATION[M*N]M个进程已经得到N类资源的资源量NEED[M*N]M个进程还需要N类资源的资源量<四>程序流程图:五.运行示例及结果分析   T0时刻可用资源(Available)A:3,B:3,C:2  请求分配时间:14:07:29   经测试,可为该进程分配资源。以下为资源分配表    资源    Work     Need    AllocationWork+Alloc  Finish   ID   A B C   A B C   A B C   A B C   P01  030302  0

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

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

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