操做系统之进程管理(3)——进程死锁

进程管理之进程死锁

进程管理(Course 4)

1、死锁的概念

一、死锁定义

【死锁】是指各并发进程互相等待对方所拥有的资源,且这些并发进程在获得对方的资源以前不会释放本身所拥有的资源(排除管理干预)。从而形成你们都想获得资源而又都得不到资源,各并发进程不能继续向前推动的状态。(以下图)

通常地,能够把死锁描述为:有并发进程P1,P2,……,Pn,它们共享资源R1,R2,……,Rm(n>0, m>0, n>=m)。其中,每一个Pi(1<=i<=n)拥有资源Rj(1<=j<=m),直到再也不有剩余资源。同时,各Pi在又不释放Rj的前提下要求获得Rk(k不等于j,1<=k<=m),从而形成资源的互相占用和互相等待。在没有外力的驱动的状况下,该组并发进程中止往前推动,陷入永久等待状态。算法

二、死锁的原由

死锁的原由是并发进程的资源竞争,而计算机的资源又是有限的,不可能无限制的给每一个进程提供资源。并发

三、产生死锁的四个必要条件

  1. 互斥条件。并发进程所要求和占有的资源是不能同时被两个以上的进程使用或操做的,进程对它所须要的资源进行排他性控制。
  2. 不可剥夺条件。进程所得到的资源在未使用完毕以前,不能被其余进程强行剥夺,而只能有得到该资源的进程本身释放。
  3. 部分分配。进程每次申请它所须要的一部分资源,在等待新资源的同时,继续占用已分配到的资源。
  4. 环路条件。存在一种进程循环链,链中每个进程已得到的资源同时被下一个进程所请求。

死锁破除:只要上述四个条件中的任意一个条件被破坏,死锁便可破除。进程

2、死锁的消除方法

解决死锁的方法通常可分为预防、避免、检测与恢复3种。资源

一、死锁预防

预防是采用某种策略限制并发进程对资源的请求。(静态策略)
(1)打破资源的互斥和不可剥夺这两个条件。例如容许进程同时访问某些资源。(缺点?)
(2)打破资源的部分分配这个死锁产生的必要条件。即预先分配各并发进程所须要的所有资源。若是某个进程的资源得不到知足的时候,则安排必定的等待次序让其余进程释放资源。(缺点?)
(3)打破死锁的环路条件。即把资源按顺序排列,使进程在申请、保持资源时不造成环路。若有m种资源,则列出R1 < R2 < …… < Rm。若进程Pi保持了资源Ri,则它只能申请比Ri级别更高的资源Rj(Ri < Rj)。释放资源时必须是Rj先于Ri被释放,从而避免环路的产生。这中方法的缺点是限制了进程对资源的请求,并且对资源的分类编序也耗去必定的系统开销。循环

二、死锁避免(动态预防)

在系统动态分配资源的过程当中预测出死锁发生的可能性并加以免。
一种基本模式是把进程分为多个步,其中每一个步所使用的资源是固定的,且在一个步内,进程所保持的资源数不变。即进程的资源请求、使用与释放要依靠不一样的步完成。
死锁避免须要占据较大的系统开销。请求

三、死锁检测和恢复

当进程进行资源请求时,死锁检测算法检查并发进程组是否构成资源的请求和保持环路。(有限状态转移图、PetriNet等技术均可有效的判断死锁发生)。死锁的恢复办法较多,最简单的是终止各锁住的进程,或按必定的顺序停止进程序列,直至已释放的资源足够剩下的进程执行结束为止。另外,也可从被锁住的进程强行剥夺资源打破不可剥夺条件解除死锁。程序

相关文章
相关标签/搜索