加载中...

| 中文名 | 银行家算法 |
| 提出者 | 迪杰斯特拉 |
| 类别 | 死锁避免算法 |
| 关键概念 | 安全状态、安全序列 |
| 前提 | 预知最大需求 |
银行家算法(Banker's Algorithm)是一种经典的死锁避免算法,由荷兰计算机科学家艾兹赫尔·迪杰斯特拉(Edsger Dijkstra)提出。它在为进程分配资源之前先做一次试探,判断分配后系统是否仍处于安全状态,只有安全时才真正分配,以此防止死锁。
死锁是指多个进程互相持有对方所需资源而无限等待的僵局。避免死锁的一种思路是在分配阶段就防患于未然。银行家算法把操作系统类比为银行家:进程如同客户,资源如同资金。银行家在放贷前会评估,若这笔贷款发放后仍能满足所有客户最终的需求并顺利收回资金,才予以发放,否则拒绝或让其等待。
银行家算法主要是操作系统教学中讲解死锁避免的经典模型,帮助理解安全状态、资源分配图等概念。在真实系统中,由于它要求预知最大需求且检查开销较大,实际应用有限,现代系统更多采用死锁预防、检测恢复或干脆忽略死锁(鸵鸟策略)。它在部分资源受控、需求可预知的专用系统中仍有借鉴价值。
问:银行家算法为什么实际很少直接使用?答:它要求进程事先声明最大资源需求,这在通用系统中难以准确预知,且每次分配都要做安全检查,开销较大,因此更多作为理论模型存在。
问:安全状态就等于不会死锁吗?答:处于安全状态一定不会死锁,因为存在能让所有进程完成的序列;但不安全状态未必立即死锁,只是有陷入死锁的风险。

| 中文名 | 银行家算法 |
| 提出者 | 迪杰斯特拉 |
| 类别 | 死锁避免算法 |
| 关键概念 | 安全状态、安全序列 |
| 前提 | 预知最大需求 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧