11.避免死锁之银行家算法

Posted 喵小喵~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.避免死锁之银行家算法相关的知识,希望对你有一定的参考价值。

   银行家算法,顾名思义,是仿照银行发放贷款采取的控制方式而设计的一种死锁避免算法.

该算法的策略是实现动态避免死锁.要明白此算法,就要明白银行的贷款策略.

  银行的目的是让利润最大化,风险最低,为了控制风险,在放贷之前,要先审核客户的信用额度.客户对资金的使用是按阶段的,并不是一定第一次就得到全部贷款,以后随着需要再次申请.为了简单起见:只要客户的信用额度不超过银行的全部流动财产,即予以批准.

  在客户均守信的情况下,银行唯一的风险就是无法满足所有客户的信用额度,从而无法收回贷款,这里无法收回贷款是因为客户资金不够,无法完成任务并返还贷款造成的.

  总结来说,银行家算法是一个动态避免死锁算法,通过对资源的仔细分配以避免死锁.其特点是可以超额批准客户的信用额度,即所有客户的信用额度之和可以超过银行的全部资本,这就是杠杆.

  动态避免的缺陷就是需要知道你将来需要什么,而由于我们没有什么有效的办法计算出一个线程所需要的资源额度,因此在实际的操作中没有采用这种动态避免方法.但是银行家却有这种能力解决这个问题.他们通过一种复杂的公式计算出你的信用额度.大部分时候这种计算比较保守,可以避免进入死锁状态.当然,他们也有算错的时候,比如美国2007-2008美国的次贷危机就是这种错误计算的一个实例.因为他们错算了客户的信用额度,使得很多人还不起款,从而导致美国的金融危机

以上是关于11.避免死锁之银行家算法的主要内容,如果未能解决你的问题,请参考以下文章

(王道408考研操作系统)第二章进程管理-第四节2:死锁处理策略之避免死锁(银行家算法)

银行家算法

避免死锁的银行家算法

银行家算法超清晰代码

银行家算法超清晰代码

操作系统死锁处理--09