死锁

当一个系统中多个进程对某些临界资源进行访问时,就有可能发生死锁。所谓死锁,就是多个进程都请求某些资源,而这些资源都由这组进程中的其他进程所保持,这样他们都持有自己的资源而又等待别的进程释放资源的状态。

发生死锁的充分必要条件是:

  • 互斥条件:即进程对临界资源的访问时互斥的,不能同时又两个或以上的进程同一访问某一资源。
  • 循环等待条件:每个进程都在等待其他进程释放自己所请求的资源。
  • 请求和保持条件:每个进程都占有一些资源,并还需要申请其他资源。在自己的任务完成之前不会释放自己已经拥有的资源。
  • 不可剥夺条件:也称“不可抢占条件”。就是资源只能有进程自己来释放,而别的进程是不能剥夺的。

<!--more-->

处理死锁的方法有:

  • 预防死锁:即通过破坏四个充要条件中的一个或多个,使系统无法发生死锁。但要注意的是,互斥条件是某些资源必须具有的条件,不仅不应该破坏,还应保证。所以只能破坏其他三个条件。
  • 避免死锁:同样是属于事先预防的策略,但并不是破坏死锁发生的条件,而是在资源分配的过程中,采用某种方法防止系统进入不安全状态。常用的方法有银行家算法。
  • 检测死锁:当死锁发生时,通过某种方法检测出来,然后采取适当的措施,把进程从死锁中解脱出来。
  • 解除死锁:当检测到已经发生死锁时,采用相应的措施解除死锁。通常是撤销某些进程,释放其资源。

【完】