Linux:死锁避免之系统安全状态

想要有顺序地学习Linux,入口在这里哦: Linux:目录索引

详细的死锁问题,请点击链接:Linux:死锁的产生、防止、避免、检测和解除

死锁避免方法之一:判断系统安全状态

避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则,让进程等待。

安全状态

所谓安全状态,是指系统能按某种进程推进顺序( P1, P2, …, Pn),为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺序地完成。此时称 P1, P2, …, Pn 为安全序列。如果系统无法找到一个安全序列,则称系统处于不安全状态。

例题解释

假设系统中有三个进程P1、P2和P3,共有12 台磁带机。进程P1总共需要10台磁带机,P2和P3 分别需要4台和9台。假设在T0时刻,进程P1、P2 和P3已分别获得5合、2台和2台,尚有3台未分配,见下表

进程 最大需求 已分配 可用
P1 10 5 3
P2 4 2
P3 9 2

解答:
①首先,如果要满足各进程的最大进程,p1差5台,p2差2台,p3差7台,当前可用资源只有3台
②将所有进程推进顺序的情况一一列举:
1.p1 p2 p3
3 < 5,p1没法完成,不符合
2.p1 p3 p2
3 < 5,p1没法完成,不符合
3.p2 p1 p3
3 > 2,p2可以完成;
p2完成后释放资源,可用资源为5台,5 = 5,p1可以完成;
p1完成后释放资源,可用资源为10台,10 > 7,p3可以完成;
所有进程都可以完成,符合
4.p2 p3 p1
3 > 2,p2可以完成;
p2完成后释放资源,可用资源为5台,5 < 7,p3没法完成,不符合
5.p3 p1 p2
3 < 7,p3没法完成,不符合
6.p3 p2 p1
3 < 7,p3没法完成,不符合
③综上,存在一个安全序列p2 p1 p3,即只要系统按此进程序列分配资源,则每个进程都能顺利完成,此时系统便进入安全状态,否则进入不安全状态,

系统安全状态与死锁的关系

并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可以避免进入死锁状态。

猜你喜欢

转载自blog.csdn.net/w_y_x_y/article/details/80056393