银行家算法 课程实现报告(完整).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
银行家算法 课程实现报告(完整)

一. 软硬件环境 1.硬件环境: PC机 内存 256M;硬盘40G 2.软件环境: 操作系统:windows xp sp2 编辑环境:Visual C++6.0 word2002 二. 课程设计目的和意义 多个进程动态地共享系统的资源可能会产生死锁现象。为保证体统中诸进程的正常运行,应事先采取必要的信息。来预防发生死锁如果在系统中已经出现死锁后,则应及时检测到死锁的发生,并采取适当措施来来解除死锁。 在实习中假定系统中任一资源在每一时刻只能由一个进程使用,任何进程不能抢占这个进程正在使用的资源,当进程得不到资源是必须等待。因此只要资源分配策略能保证进程不出现循环等待,则系统就不会发生死锁。 目前处理死锁的方法主要有四种:预防死锁、避免死锁、检测死锁和解除死锁。预防死锁和避免死锁实质上都是通过施加某些限制条件的方法来预防发生死锁。而这次课程设计主要目的是使系统都处于安全状态,避免发生死锁。 同时,通过这次课程设计,需要掌握以下内容: 1.什么是资源分配,为什么要进行资源分配 2.什么是死锁,死锁产生的条件 3.避免死锁的银行家算法,并模拟实现 本课程设计实现的是采用第三种方法. 三. 课程设计具体过程及内容 1. 课题设计背景: 在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用提高吞吐量,但可能发生一种危险——死锁。所谓死锁,是指多个进程运行中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们都无法再向前推进。 虽然进程在运行过程中,可能发生死锁,但死锁的发生必须同时具备四个条件: (1)互斥条件:即一个资源每次只能由一个进程占用,如果此时还有其他进程请求该进程,则请求者只能等待,直到占有该资源的进程用毕释放。 (2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。 (3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时自己释放。 (4)环路等待条件:系统中存在若干个等待的进程,即其中每一个进程分别等待它的前一个进程所持有的资源。 防止死锁的机构只须确保上述四个条件之一不出现,则系统不会发生死锁。 系统的状态分为安全状态和不安全状态,只要能使系统都处于安全状态,便可避免死锁。所谓安全状态,是指系统能按某种进程顺序(P1,P2,…,Pn),来为每个进程Pi分配其所需分配,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到一个这样地安全系列,则称系统处于不安全状态。 最有代表性的避免死锁的算法,是Dijkstra的银行家算法。这是由于该算法能用于银行系统现金贷款的发放而得名的。 在操作系统中研究资源分配策略时也有类似的问题,系统中有限的资源要供多个进程使用,必须保证得到资源的进程能在有限的时间内归还资源,以供它进程使用资源。如果资源分配不得当就会发生进程循环等待资源,各进程都无法继续执行下去的死锁现象。 2.银行家算法: 在这里,用银行家算法实现资源分配,同时检测资源的分配是否使系统处于安全状态。 银行家算法分配资源的原则是:系统掌握每个进程对资源的最大需求量,当进程要求申请资源时,系统就测试该进程尚需资源的最大量,如果系统中现存的资源数大于或等于该进程尚需的最大量时,则就满足进程的当前申请。这样可以保证至少有一个进程可能得到全部资源而执行到结束,然后归还它所占用的全部资源供其它进程使用。银行家算法破坏了产生死锁的第四个条件,即不可能产生循环等待,从而可以避免死锁的发生。 银行家算法中的数据结构: (1) 最大需求矩阵Max(二维数组) 是一个含有n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max(i,j)=k,?表示进程i需要Rj类资源的最大数目为k。 (2) 分配矩阵Allocation(二维数组) 是一个含有n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation(i,j)=k,?表示进程i当前已分得Rj类资源k个。 (3) 需求矩阵Need (二维数组) 是一个含有n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need(i,j)=k,?表示进程i还需要Rj类资源k个,方能完成其任务。 Need(i,j)= Max(i,j)-Allocation(i,j) (4) 可利用资源向量Available(一维数组) 是一个含有m个元素,其中的每一个元素代表一类可利用的资源数目,

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档