银行家算法-操作系统中避免死锁的最著名算法

背景

有很多文章都会介绍银行家算法。在百度和CSDN上搜一搜能搜出很多来。很多同学会觉得这个算法很深奥,有些文章写的又很复杂,其实真的很简单。这里简单记录一下基本原理,然后大家再配合其他文章看,就能加深理解。

算法原理

银行家算法主要是为了解决死锁问题。CPU有资源相当于银行家有钱,很多进程争夺资源相当于很多客户争着贷款。银行家为了能满足所有客户的贷款需求,采取的办法是分批次循环放贷。先给需求小的客户放贷,等客户用完了收回贷款,这样资金就变多了,然后再给第二个客户放贷,然后再收回贷款再放贷。
为什么放贷要从小需求客户开始,因为银行家资源有限,上来就给大客户放贷,资源可能不够。

先给小客户放贷,收回贷款的时候能收回更多,资源就更多了。

这样放一批贷款,收一批贷款,把所有客户过一遍,都能满足需求,就是符合了安全性要求

这就是银行家算法中最重要的安全性算法。

按照这个顺序,有些客户的需求还是无法满足,达不到安全性需求,系统就需要挂起一部分进程,否则就会崩溃。

这个原理其实很好理解,上面的比喻可能不够精确,但是却是最好的理解途径了。

希望能帮到大家。

相关推荐
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
郭涤生1 天前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
航Hang*1 天前
第3章:Linux系统安全管理——第2节:部署代理服务
linux·运维·服务器·开发语言·笔记·系统安全
༾冬瓜大侠༿1 天前
vector
c语言·开发语言·数据结构·c++·算法
Ricky111zzz1 天前
leetcode学python记录1
python·算法·leetcode·职场和发展
汀、人工智能1 天前
[特殊字符] 第58课:两个正序数组的中位数
数据结构·算法·数据库架构··数据流·两个正序数组的中位数
liu****1 天前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯
汀、人工智能1 天前
[特殊字符] 第79课:分割等和子集
数据结构·算法·数据库架构·位运算·哈希表·分割等和子集
汀、人工智能1 天前
[特殊字符] 第74课:完全平方数
数据结构·算法·数据库架构·图论·bfs·完全平方数
CoderCodingNo1 天前
【GESP】C++四、五级练习题 luogu-P1177 【模板】排序
数据结构·c++·算法