关注大学生就业,培养泛IT高端人才

陕西新榜样官方网站

您的位置: 主页 > 新闻动态 > 公司动态 >

死锁与银行家算法

来源:西安JAVA培训 发布时间:2017-10-12 浏览量:

  系统发生死锁现象不仅浪费大量的系统资源,甚至导致整个系统崩溃,带来灾难性后果。所以,对于死锁问题在理论上和技术上都必须予以高度重视。

  是多线程特有的问题,它可以被认为是线程间切换消耗系统性能的一种极端情况。在死锁时,线程间相互等待资源,而又不释放自身的资源,导致无穷无尽的等待,其结果是系统任务永远无法执行完成。死锁问题是在多线程开发中应该坚决避免和杜绝的问题。

  一般来说,要出现死锁问题需要满足以下条件:

  1、互斥条件:一个资源每次只能被一个线程使用。

  2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

  3、不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。

  4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

  只要破坏死锁4个必要条件之一中的任何一个,死锁问题就能被解决。

  下面以银行为例,介绍一个在解决死锁问题上很好用的算法-银行家算法。

  一个银行家如何将一定数目的资金安全地借给若干个客户,使这些客户既能借到钱完成要干的事,同时银行家又能收回全部资金而不至于破产。银行家就像一个操作系统,客户就像运行的进程,银行家的资金就是系统的资源。

  银行家算法需要确保以下四点:

  1、当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客。

  2、顾客可以分期贷款,但贷款的总数不能超过最大需求量。

  3、当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款。

  4、当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金。

  免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人研究、交流学习使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。新榜样会定期发布西安IT培训等相关资料文章,包括西安JAVA培训陕西UI培训WEB开发培训网络营销工程师培训等领域,敬请关注!

  更多相关西安JAVA培训资讯,请点击: www.xinbangyang.com

IT培训 服务