操作系统死锁银行家算法详解
本文最后更新于:2 年前
前言
关于处理死锁的一个经典算法 银行家算法 详解。
一.银行家算法微例
其实我们把资源看的简单一点,只看一个资源。
比如说你有10块钱,有很多人想向你借钱。
银行家算法就是保证有人向你借钱的时候,你能够有钱借给他。
具体的想法是这样的,比如说有A B C D 4个人想跟你借钱。
你给每人都发了2块钱。
每个人的需求都不一样。
A 想要借 5块钱,B想要借 8块钱,C想要借 6块钱,D想要借 3块钱。
这样我们就可以搭建一个简单粗略的需求表。
1 |
|
这个时候你看 你手上还有2块钱,还能借给谁呢?
D D还差1块钱就满足了,所以你选择借给D,然后D借完了钱用好了还给你了。
这个时候你手上就有4块钱了。 ABC还在等着排队跟你借钱呢。
这个时候你再看,B跟你要6块,你没有啊,只能选择借给A或者C,看关系优先借给谁把。
所以你选择借给A,然后A借完了钱用好了还给你了。
这个时候你手上就有6块钱了。 就剩BC了。
你都可以满足他们的借款需求,看关系优先借给谁。
所以你选择借给C,然后C借完了钱用好了还给你了。
这个时候你手上就有8块钱了。 最后借给B。
我们这个放贷的顺序,就是D-A-C-B
这个就是一个简单的银行家算法的安全序列。
二.银行家算法详解
当然这个只是单个资源的情况下,多个资源就是共同判断。
银行家算法也有很多限制条件。
- 顾客的借款操作依次顺序进行。
- 顾客需要说明最大借款额。
三.安全序列和能否满足
1.安全序列
安全序列就是上面微例的一个借款顺序,计算机中就是进程的运行顺序,并不唯一。
2.能否满足
这点就毋庸置疑。
- 看你的钱能不能满足借款人的需求。 你有10块钱 别人想要100 满足不了。
- 突然提出请求也很简单,假设我把钱借给它了,那么我剩下的钱,能不能支持我再进行一次安全序列来判断满不满足。
操作系统死锁银行家算法详解
https://www.chaierss.online/posts/bc8f3be9.html