思维导图

操作系统之进程管理:19、死锁的处理策略:避免死锁(银行家算法)

安全序列

操作系统之进程管理:19、死锁的处理策略:避免死锁(银行家算法)

来看这样的情况:
由上述表格可知,B仍需50,A仍需30,T仍需20,我手中剩余40
方案一
我将30借给B,我手中剩余10;B仍需20,A仍需30,T仍需20;此时我手中剩余的钱借给谁都满足不了他们的需求;不安全
方案二
我将30借给A;A满足后将所有钱归还,此时我手中剩余50;
然后将50借给B;B满足后将所有钱归还,此时我手中剩余70;
然后我在将20借给T;T满足后将所有钱归还;此时手中剩余100;
这样都达到了B、A、T的需求;安全序列为:A->B->T(不唯一,满足即可)。我们称这样一个序列为安全序列。

操作系统之进程管理:19、死锁的处理策略:避免死锁(银行家算法)
如果系统处于安全状态,就一定不会发生死锁。如果系统进入不安全状态,就可能发生死锁。(处于不安全状态未必死锁,但死锁一定处于不安全状态)

操作系统之进程管理:19、死锁的处理策略:避免死锁(银行家算法)

剩余资源数:(3,3,2)
第一次分配:P1,满足;释放后剩余:(5,3,2)
第二次分配:P3,满足;释放后剩余:(7,4,3)
第三次分配:P0,满足;释放后剩余:(7,5,3)
第四次分配:P2,满足;释放后剩余:(10,5,5)
第五次分配:P4,满足;释放后剩余:(10,5,7)
安全序列:P1–P3–P0–P2–P4(不唯一)

银行家算法实现步骤

操作系统之进程管理:19、死锁的处理策略:避免死锁(银行家算法)

银行家算法的实现

操作系统之进程管理:19、死锁的处理策略:避免死锁(银行家算法)

相关文章: