23 November 2013

死锁的定义

一个进程集合中每个进程都在等待只能由该进程集合中其他进程才能引发的事件,那么该进程集合就处于死锁状态。


死锁的四个必要条件

  1. 互斥:同一时间内,一个资源只能分配到一个进程使用
  2. 占有和等待:
  3. 不可抢断:被分配的资源不能被抢占,只能等主动释放。
  4. 环路等待:多个进程组成环路,每个进程都在等其他进程的资源。

死锁发生时以上四个条件必须同时满足,有一个不满足死锁就不会发生。


死锁检测

  1. 多种类型单个资源:在资源分配图中查找有向环。
  2. 多类型多资源:矩阵表示,(银行家算法)。

死锁恢复

  1. 抢占:选择一个进程挂起,释放其占有的资源。
  2. 回滚:要求设置checkpoint。
  3. kill进程:选择再次运行无副作用的进程kill,等稍后再次运行。

安全状态

为发生死锁,且所有进程突然请求最大需求,也仍然可以以某种调度次序使每个进程运行完毕。

不安全并不是死锁。


死锁和预防

  1. 互质:假脱机技术。
  2. 占有和等待:一次请求所有资源。
  3. 不可抢占:抢。
  4. 环路等待:给资源编号,所有进程只能按照需要访问资源。


blog comments powered by Disqus