死锁的条件,怎么解除死锁,怎么观测死锁

死锁的条件,怎么解除死锁,怎么观测死锁。

死锁的产生有四个必要条件:

  1. 互斥条件:一个资源一次只能被一个进程使用
  2. 请求与保持条件:一个进程因为请求资源而阻塞时,对已经获得的资源保持不放
  3. 不剥夺条件:进程已经获得的资源,在未使用完之前,不能被强行剥夺
  4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系

死锁的检测:

一个简单的死锁检测方法,准备两张表。

一张记录当前资源的分配,有线程和它占有的资源的对应。

另一张记录当前等待资源的线程,有等待的线程和它请求的资源的对应。

当能够检测到环路时,表示发生了死锁。

死锁的解除:

有两种方法,对应不同的操作。

第一种方法:进程终止,简单地终止一个或多个进程以打破循环等待。

  • 撤销所有死锁线程

  • 一次终止一个线程直到取消死循环为止

    扫描二维码关注公众号,回复: 8994446 查看本文章

第二种方法:抢占资源,从一个或多个死锁进程中抢占一个或多个资源

  • 选择一个牺牲品
  • 回滚
  • 饥饿(在代价因素中加上回滚次数,回滚的越多则越不可能被作为牺牲品)

猜你喜欢

转载自www.cnblogs.com/peekapoo/p/12273980.html