死锁的解除

当死锁检测程序检测到死锁存在时,应设法将其解除,让系统从死锁状态中恢复过来。常用的解除死锁的方法包括:

方法 说明 优点 缺点
立即结束所有进程 结束所有进程的执行,并重新启动操作系统 简单 损失大,之前的工作全部作废
撤销所有死锁进程 撤销涉及死锁的所有进程,解除死锁后继续运行 能彻底破坏死锁的循环等待条件 代价高,可能会导致一些重要进程被终止,进程已做的工作会丢失,恢复过程麻烦。
逐个撤销死锁进程 逐个撤销涉及死锁的进程,回收其资源,直至死锁解除 灵活,可根据进程特性选择撤销顺序 需判断先撤销哪些进程,可能比较复杂
抢夺资源 从涉及死锁的进程中抢夺资源,重新分配给其他进程 能在不终止进程的情况下解除死锁 可能导致其他进程的不稳定,需谨慎处理

逐个撤销死锁进程的条件选择

在逐个撤销死锁进程时,可以选择符合以下条件的进程优先撤销:

  • 消耗的 CPU 时间最少者

  • 产生的输出最少者

  • 预计剩余执行时间最长者
  • 占有资源数最少者
  • 优先级最低者

这种方法通过灵活选择撤销的进程,可以在尽量减少影响的情况下解除死锁。