1. 银行家算法
(1)问题描述
研究一个银行家如何将总数一定的资金,安全地借给若干个顾客,使顾客既能满足对资金的需求,也使银行家可以收回自己的全部资金,而不至于破产。
(2)一些限制条件
①每个顾客在借款前必须提前说明所需资金总额
②每次借钱都是以一个单位进行(如:一个单位为1万人民币)
③顾客在拿到一个单位的借款前可能需要等待。(因为算法实现上会先将钱借给资金需求最少的客户,所以其他客户需等待银行资金足够时才能借到)
④银行保证顾客在等待时间是有限的(借或不借)。
2. 算法示例
3. 算法策略及应用场景
(1)算法策略:将资金优先借给资金需求较少的客户
(2)应用场景:
①操作系统内核中的进程管理;
②数据库内核中的频繁事务管理
4. 算法实现方案
(1)使用多线程机制模拟客户和银行
(2)银行优先分配资源给最小需求的客户
(3)当客户的资源需求无法满足的时候
①收回己分配的资源;
②强制结束线程。
【编程实验】银行家算法的实现
5. 小结
(1)银行家算法常用于资源分配的场合
(2)可以保证资源分配的安全性
(3)采用优先满足需求量较少的客户进行资源分配的算法策略。
原文:http://www.cnblogs.com/5iedu/p/6308644.html