死锁的解除
当死锁检测程序检测到死锁存在时,应设法将其解除,让系统从死锁状态中恢复过来。常用的解除死锁的方法包括:
方法 | 说明 | 优点 | 缺点 |
---|---|---|---|
立即结束所有进程 | 结束所有进程的执行,并重新启动操作系统 | 简单 | 损失大,之前的工作全部作废 |
撤销所有死锁进程 | 撤销涉及死锁的所有进程,解除死锁后继续运行 | 能彻底破坏死锁的循环等待条件 | 代价高,可能会导致一些重要进程被终止,进程已做的工作会丢失,恢复过程麻烦。 |
逐个撤销死锁进程 | 逐个撤销涉及死锁的进程,回收其资源,直至死锁解除 | 灵活,可根据进程特性选择撤销顺序 | 需判断先撤销哪些进程,可能比较复杂 |
抢夺资源 | 从涉及死锁的进程中抢夺资源,重新分配给其他进程 | 能在不终止进程的情况下解除死锁 | 可能导致其他进程的不稳定,需谨慎处理 |
逐个撤销死锁进程的条件选择
在逐个撤销死锁进程时,可以选择符合以下条件的进程优先撤销:
-
消耗的 CPU 时间最少者
-
产生的输出最少者
- 预计剩余执行时间最长者
- 占有资源数最少者
- 优先级最低者
这种方法通过灵活选择撤销的进程,可以在尽量减少影响的情况下解除死锁。