轻松学——操作系统

上一篇 / 下一篇  2012-04-17 09:49:20 / 个人分类:杂谈

进程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/R5e D

  我们还是来看图进行分析:

Gya6fUA0Q \.ng0

51Testing软件测试网8QsF/TEW

  我们就这个图进行分析各个关键部分:这些关键在于理解,很Easy的,或者你把这个图画出来也就马上明白了。

e6MF'I m0

  就绪:就是“万事俱备只欠东风”,就差CPU的调度了,只要CPU一调度便可运行。51Testing软件测试网1K.G(^8kv7w n

  运行:就是在就绪状态的基础上得到了CPU的调度。51Testing软件测试网5OZk)O1M

  等待(阻塞):还没具备运行条件,等待时机的状态,我们从这个图也能看的出来,等待状态不能直接运行,必须要经过就绪这个状态的,所以等待状态除了等待CPU调度之外,还缺少某些运行所需的条件。51Testing软件测试网h;hl vNf5f\5h

  五态图:

6Qn kzg~f+G0

GeB8~%vmum4[!W0

  我们把几个关键的概括一下:其实这个图跟咱们上面那个三态图是吻合的,只是把三态图分的更细了点我觉得;所以分析五态图咱们只需要把三态图掌握好就行,就这么easy;我们再看看几个关键的:主要是三态图的一个动态的一个表示过程,所以这些概念的东西,结合前面的三态图理解就非常容易了:

3w x,y~Z0j0

  就绪——>运行:就是三态图中的,条件被CPU选中了。51Testing软件测试网$iZ$I}q hN

  运行——>就绪:运行超时或者是条件被更高优先级进程剥夺。51Testing软件测试网\ xv6z1Fs keB1X

  运行——>等待:条件还没具备运行条件,等待某一事件的发生。

g@ bqu-gd2g0?|0

  等待——>就绪:条件是等待的事件已发生,具备了运行条件。

r0O|k6R'R ?0

  在这里边,还非常要主要这些箭头的指向。

+YE(fACJ f0

  2、进程死锁:

9|y.F}IV0

  死锁是进程管理设计不当造成的;进程死锁是一个进程在等待一个不可能发生的事;系统死锁是一个或多个进程产生死锁。51Testing软件测试网5Uy;J6~:Q*E?Q

  其实对于这方面的知识,跟咱们生活是很有联系的。比如我们使用过打印机都知道。所以把生活的场景投进去理解,就很简单了。

of,l%es wF'J0

  死锁产生的必要条件:

'Up.g'bZr MN0

  互斥条件:即一个资源每次只能被一个进程使用。

;Y*s,?/R v J0

保持和等待条件:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。

0NNj$Fb o&H7}051Testing软件测试网c8zB6J"K

  不剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。51Testing软件测试网,YoO)d/~#yh/y

51Testing软件测试网9E%j \cAmrfW

  环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。51Testing软件测试网,\8I5[g7[c6Zq

51Testing软件测试网XFN wI

  解决死锁的策略51Testing软件测试网Gh oWh1M!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|@8SWm#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$hZ5JMc9c

  那只能是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)PndGR0

  我们要是先分配P1,再分配P5,再到P3.结果就是:51Testing软件测试网:^ XYT.M8S^(a

c|%tUi0wFF#N]W0

  虽然进程的这个顺序有很多种,在都满足不造成死锁的情况下,是否有最优的排序呢?我觉得应该是有的,就是在不发生死锁的情况下,我们应该是优先给予需要资源少的进程。

'~#A'IG~2\P^0

TAG:

 

评分:0

我来说两句

Open Toolbar