MST
星途 面试题库

面试题:并发与同步:死锁恢复技术的深入探讨

假设系统发生死锁,使用撤销进程和剥夺资源两种死锁恢复技术,分别描述其具体实现步骤以及在实际应用中可能面临的问题和挑战。同时,分析如何平衡恢复死锁所带来的系统开销和系统稳定性之间的关系。
34.1万 热度难度
操作系统并发与同步

知识考点

AI 面试

面试题答案

一键面试

撤销进程技术

  1. 具体实现步骤
    • 确定撤销对象:选择陷入死锁的进程集合,可依据进程优先级、已执行时间、资源占用量等因素决定撤销哪些进程。例如,优先撤销优先级低、执行时间短且占用资源少的进程。
    • 终止进程:强制终止选定的进程,释放其占用的所有资源,这些资源可供其他进程使用,从而打破死锁循环。
  2. 实际应用中可能面临的问题和挑战
    • 数据丢失:被撤销进程可能尚未完成关键任务,导致部分数据处理未完成或丢失,影响系统功能完整性。如数据库事务处理进程被撤销,可能导致数据不一致。
    • 应用中断:若撤销的是与用户交互的进程,会造成用户体验变差,如撤销图形界面进程,用户操作会突然中断。
    • 重新执行困难:一些进程重新执行可能面临诸多困难,如依赖特定运行状态或外部条件,再次执行可能无法恢复到之前的正确状态。

剥夺资源技术

  1. 具体实现步骤
    • 资源识别:识别死锁进程占用的可剥夺资源,如CPU时间片、内存空间等。某些资源不可剥夺,如已分配的专用设备,需注意区分。
    • 资源剥夺:从死锁进程中剥夺选定的资源,分配给其他处于等待状态且能继续执行的进程,以打破死锁。例如,将一个死锁进程占用的部分内存空间分配给等待内存的进程。
    • 进程挂起:被剥夺资源的进程可能因资源不足无法继续执行,需将其挂起,等待重新获得足够资源后再恢复执行。
  2. 实际应用中可能面临的问题和挑战
    • 进程状态维护:剥夺资源后进程状态难以准确维护,重新分配资源恢复执行时,可能因状态不一致导致错误。如进程处于复杂计算中间状态,剥夺资源后再恢复可能计算结果错误。
    • 饿死风险:频繁剥夺某些进程资源,可能导致这些进程长时间无法获得足够资源执行,产生饿死现象。
    • 资源依赖性:某些资源存在依赖关系,剥夺一个资源可能导致其他相关资源不可用,引发新的问题。

平衡恢复死锁所带来的系统开销和系统稳定性之间的关系

  1. 开销评估:在采取恢复技术前,评估撤销进程或剥夺资源带来的系统开销,包括数据恢复成本、进程重新启动成本、状态维护成本等。例如,对于重要且复杂的进程,撤销可能带来巨大数据恢复成本,应谨慎考虑。
  2. 稳定性优先:优先选择对系统稳定性影响小的恢复技术。如尽量避免撤销关键业务进程,优先尝试剥夺非关键资源。若剥夺资源能解决死锁且对进程影响小,优先采用该方法。
  3. 动态调整:根据系统运行状态动态调整恢复策略。若系统负载较低,可选择开销稍大但能彻底解决死锁的方法;系统负载高时,优先选择快速且对系统影响小的方法,如优先剥夺少量资源尝试解决死锁,不行再考虑撤销进程。
  4. 预防结合:加强死锁预防机制,减少死锁发生概率,降低恢复开销。如采用资源分配图算法提前检测死锁可能性,避免死锁形成,从而减轻恢复时平衡开销与稳定性的压力。