操作系统——死锁

169 阅读1分钟

死锁产生的必要条件

  1. 互斥条件:进程独自占用资源,不与其他进程共享
  2. 不剥夺条件:资源只能由进程自己释放,不能被剥夺
  3. 请求保持条件:当进程因为请求的资源无法得到而被阻塞时,依然对自己已有的资源保持不放
  4. 环路等待条件:在发生死锁时,必然存在一个进程——资源环形链

解决死锁的基本方法

1. 预防死锁

  1. 破坏请求保持条件:一次性分配所有资源,如果无法做到就不给他分配资源
  2. 破坏不可剥夺条件:得到一部分但得不到其他资源,则释放已有资源
  3. 破坏环路等待条件:给每类资源赋予编号,每个进程按顺序请求资源,释放则相反

2. 检测死锁,避免死锁

银行家算法,按照一定次序去进行资源分配,使得每一个进程都可以在一个时间获得自己所需要的资源,通过算法调度资源,检测当前状态释放安全,不安全,有可能破产(也就是有可能发生环路等待)则拒绝进入这个状态

3. 解除死锁

  1. 资源剥夺:挂起某些死锁,抢占他的资源,将这些资源分配给其他的死锁进程
  2. 撤销进程:杀死一部分或全部死锁进程死锁进程
  3. 进程回退:让一个或多个进程回退到足以避免死锁的地步,进程回退是资源释放资源而不是剥夺,要求系统保持进程历史信息,设置还原点