操作系统--银行家算法详解


银行家算法( banker's algorithm )由 Dijkstra(1065)提出。他将死锁的问题演示为一个银行家贷款的模型。
一个银行家向一群客户发放信用卡,每个客户有不同的信用额度。每个客户可以提出信用额度内的任意额度的请求,直到额度用完后再一次性还款。银行家承诺每个客户最终都能获得自己需要的额度。
所谓“最终”,是说银行家可以先挂起某个额度请求较大的客户的请求,优先满足小额度的请求,等小额度的请求还款后,再处理挂起的请求。这样,资金能够永远流通。
银行家算法可以用以下图表表示:
blob.png

每个客户和银行家都有交易限额。银行家只能和限额小于自己限额的客户进行交易。一旦银行家的限额小于所有客户的限额,便发生了死锁。
如上图所示。银行家分别和客户1,客户2,客户3进行了交易。第一次交易时,所有客户的限额都小于银行家的限额,任何客户都可以实现借款;第二次交易时,客户3的限额大小银行家的限额,这时银行家会挂起客户3 的请求;第三次交易时,只有客户3可以进行交易,其它的交易都会被挂起。直到客户3还款后,银行家才会考虑处理其它客户的交易。

银行家算法其核心是:保证自己的限额至少不小于一个客户的限额。



实例列举:

假定系统中有五个进程{P0, P1, P2, P3, P4}和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图所示。

      表1 T0时刻的资源分配表


MAX Allocation Need Available
P0            7 5 3         0 1 0         7 4 3          3 3 2        
P1 3 2 2     2 0 0 1 2 2     
P2 9 0 2 3 0 2 6 0 0
P3 2 2 2  2 1 1   0 1 1
P4
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值