进程51Testing软件测试网2XOY/@P.^.n L 1、进程的状态:51Testing软件测试网:sY'Hh o|
51Testing软件测试网@1@q;Y3BZBl 这里边我们主要是要讲的内容就是这两个图:我们通过这两个图来介绍一些相关的知识点:
N~2ilw051Testing软件测试网`2o's(S(~O-t 三态图:
JFA9}sq A5y^-\)d&p*Ww051Testing软件测试网/ZA+|6s
pu/R5eD 我们还是来看图进行分析:
Gya6fUA0Q
\.ng051Testing软件测试网8Q sF/TEW
我们就这个图进行分析各个关键部分:这些关键在于理解,很Easy的,或者你把这个图画出来也就马上明白了。
e6MF'I m0 就绪:就是“万事俱备只欠东风”,就差CPU的调度了,只要CPU一调度便可运行。51Testing软件测试网1K.G(^8kv7w
n
运行:就是在就绪状态的基础上得到了CPU的调度。51Testing软件测试网5OZk)O1M
等待(阻塞):还没具备运行条件,等待时机的状态,我们从这个图也能看的出来,等待状态不能直接运行,必须要经过就绪这个状态的,所以等待状态除了等待CPU调度之外,还缺少某些运行所需的条件。51Testing软件测试网 h;hl vNf5f\5h
五态图:
6Qnkzg~f+G0
GeB8~%vmum4[!W0 我们把几个关键的概括一下:其实这个图跟咱们上面那个三态图是吻合的,只是把三态图分的更细了点我觉得;所以分析五态图咱们只需要把三态图掌握好就行,就这么easy;我们再看看几个关键的:主要是三态图的一个动态的一个表示过程,所以这些概念的东西,结合前面的三态图理解就非常容易了:
3w x,y~Z0j0 就绪——>运行:就是三态图中的,条件被CPU选中了。51Testing软件测试网$iZ$I}qhN
运行——>就绪:运行超时或者是条件被更高优先级进程剥夺。51Testing软件测试网\
xv6z1Fs
keB1X
运行——>等待:条件还没具备运行条件,等待某一事件的发生。
g@
bq u-gd2g0?|0 等待——>就绪:条件是等待的事件已发生,具备了运行条件。
r0O|k6R'R ?0 在这里边,还非常要主要这些箭头的指向。
+YE(fACJf0 2、进程死锁:
9|y.F}IV0 死锁是进程管理设计不当造成的;进程死锁是一个进程在等待一个不可能发生的事;系统死锁是一个或多个进程产生死锁。51Testing软件测试网5Uy;J6~:Q*E?Q
其实对于这方面的知识,跟咱们生活是很有联系的。比如我们使用过打印机都知道。所以把生活的场景投进去理解,就很简单了。
of,l%esw F'J0 死锁产生的必要条件:
'Up.g'b Zr
MN0 互斥条件:即一个资源每次只能被一个进程使用。
;Y*s,?/R
vJ0保持和等待条件:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。
0NNj$Fb
o&H7}051Testing软件测试网c8zB6J"K 不剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。51Testing软件测试网,YoO)d/~#yh/y
51Testing软件测试网9E%j
\cA mrfW 环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。51Testing软件测试网,\8I5[g7[c6Zq
51Testing软件测试网XFNwI 解决死锁的策略51Testing软件测试网GhoWh1M!V:y$O:M
51Testing软件测试网{+crm-P.f.t+})t!] 死锁预防:我们要求用户申请资源时一起申请所需的全部资源,这就破坏了保持和等待条件:将资源分层,得到上一层资源后,才能申请下一层资源,它破坏了环路等待条件。预防通常会降低系统的效率。
p
Y5?8gB)VjwB0{y} pn?UR0 死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,典型算法是”银行家算法“。但这种算法会增加系统的开销。51Testing软件测试网d}%~4CJ@
51Testing软件测试网)d LhT(X0V@'x+q7H:z 死锁检测:前两者是事前措施,而死锁的检测则是判断系统是否处于死锁状态,如果是,则执行死锁解除策略。51Testing软件测试网]3W.}]8dLP
+d|@8SW m#d$gp,T'^0 死锁解除:这是与死锁检测结合使用的,它使用的方式就是剥夺。即将资源强行分配给别的进程。51Testing软件测试网X}!Us+E_%?
H8JvGl+D0 接下来,我们来实战一下:51Testing软件测试网4]9g$E&tz!`
l
51Testing软件测试网ti%Y'}%H6c 银行家算法:51Testing软件测试网/Q0?[7`"T9R1__@&cX
R~[ ZM@0 找了这么一个例子跟大家分析分析我的理解过程:51Testing软件测试网3I6t`1gx kF
首先求剩下的资源数:51Testing软件测试网eA/i)hZ s#H'X
R1=9-(1+2+2++1)=251Testing软件测试网](w!M ~1dY
R2=8-(2+1+1+2+1)=151Testing软件测试网3v:~.Y4N"Q!v'z
R3=5-(1+1+3)=0
)q&e'[BH,qd^MUQ0 我们从这个表中很容易的分析出:还需资源数=最大需求量-已分配资源数51Testing软件测试网 U9X%v?S-Y'F'~UZ
51Testing软件测试网'kQKI+qa]'| F
那么需要一个系统是安全的,那么这个进程就不能产生死锁。现在就一目了然了都:51Testing软件测试网eY7H/q+f"i
l.K
从我们剩下的资源数和还需要的资源数,我们剩下的R1=2、R2=1、R3=0这个只能符合P2进程的0、1、0;
:s_#FKW'k0 那么我们给P1运行完成之后,我们的资源要释放,所以我们资源=现有资源+已经分配的:51Testing软件测试网/Qy5o+~J{I*Yb
51Testing软件测试网&u5FC/fVvBk
那么我们现在就有了R1、R2、R3的资源分别为:4、2、1;我们再观察一下看哪个进程需要资源符合我们的释放的资源的:
D+y"xMcttF8m2c7a051Testing软件测试网2z(sT$h Z5JMc9c 那只能是P4了,因为需要的资源为:0、0、1;而我们现在有的资源为:4、2、1,完全能满足这个进程P4的要求;我们看图:51Testing软件测试网
GeFP7E3V
51Testing软件测试网 V#FFP/I:E
那么这两个进程就完成了,接下来我们还继续对比着来看:
c%x+M1r4Y.A0 我们剩下的资源5、4、1。这时候我们发现了P5和P1都能满足他们所需的资源:所以P5和P1就可以随心所欲了,那我们不如就从需要资源小的开始分配试试;
g-S w7q#r v0
dDJ-j,_/p7?0 这时候我们发现我们剩余的资源又能满足到P3和P1进程了。所以我们的答案就不止一种了:
W kBv"CP+H0
sr7j@t/B)Pnd GR0 我们要是先分配P1,再分配P5,再到P3.结果就是:51Testing软件测试网:^
XYT.M8S^(a
c|%tUi0wFF#N]W0 虽然进程的这个顺序有很多种,在都满足不造成死锁的情况下,是否有最优的排序呢?我觉得应该是有的,就是在不发生死锁的情况下,我们应该是优先给予需要资源少的进程。
'~#A'IG~2\P^0