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

背景

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

算法原理

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

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

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

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

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

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

希望能帮到大家。

相关推荐
aaaameliaaa5 分钟前
计算斐波那契数(递归、迭代)(1,1,2,3,5.....)
c语言·开发语言·笔记·算法·排序算法
Jerry11 分钟前
LeetCode 977. 有序数组的平方
算法
Turbo正则36 分钟前
群论学习入门 | 群论与李群的基本概念
人工智能·学习·算法·抽象代数
sugar__salt1 小时前
手撕字符串算法:反转、回文、验证回文 Ⅱ 完整拆解
javascript·算法·面试·职场和发展
To_OC1 小时前
从一行报错开始,把字符串反转、回文算法连带着包装类一起捋明白
javascript·算法·api
LCG米1 小时前
机器人控制系统与运动规划:从RRT算法到ROS move_base实战
算法·机器人
QiLinkOS1 小时前
第三视觉理解徐玉生与他的商业活动(26)
大数据·c++·人工智能·算法·开源协议
手写码匠1 小时前
手写 LLM 结构化输出引擎 —— 从 JSON Schema 约束到类型安全的数据提取
人工智能·深度学习·算法·aigc
zhiSiBuYu05171 小时前
重排序(Rerank)提升检索准确率实战指南
开发语言·python·算法
月疯2 小时前
华为手环的部分功能
算法