面试题答案
一键面试撤销进程技术
- 具体实现步骤
- 确定撤销对象:选择陷入死锁的进程集合,可依据进程优先级、已执行时间、资源占用量等因素决定撤销哪些进程。例如,优先撤销优先级低、执行时间短且占用资源少的进程。
- 终止进程:强制终止选定的进程,释放其占用的所有资源,这些资源可供其他进程使用,从而打破死锁循环。
- 实际应用中可能面临的问题和挑战
- 数据丢失:被撤销进程可能尚未完成关键任务,导致部分数据处理未完成或丢失,影响系统功能完整性。如数据库事务处理进程被撤销,可能导致数据不一致。
- 应用中断:若撤销的是与用户交互的进程,会造成用户体验变差,如撤销图形界面进程,用户操作会突然中断。
- 重新执行困难:一些进程重新执行可能面临诸多困难,如依赖特定运行状态或外部条件,再次执行可能无法恢复到之前的正确状态。
剥夺资源技术
- 具体实现步骤
- 资源识别:识别死锁进程占用的可剥夺资源,如CPU时间片、内存空间等。某些资源不可剥夺,如已分配的专用设备,需注意区分。
- 资源剥夺:从死锁进程中剥夺选定的资源,分配给其他处于等待状态且能继续执行的进程,以打破死锁。例如,将一个死锁进程占用的部分内存空间分配给等待内存的进程。
- 进程挂起:被剥夺资源的进程可能因资源不足无法继续执行,需将其挂起,等待重新获得足够资源后再恢复执行。
- 实际应用中可能面临的问题和挑战
- 进程状态维护:剥夺资源后进程状态难以准确维护,重新分配资源恢复执行时,可能因状态不一致导致错误。如进程处于复杂计算中间状态,剥夺资源后再恢复可能计算结果错误。
- 饿死风险:频繁剥夺某些进程资源,可能导致这些进程长时间无法获得足够资源执行,产生饿死现象。
- 资源依赖性:某些资源存在依赖关系,剥夺一个资源可能导致其他相关资源不可用,引发新的问题。
平衡恢复死锁所带来的系统开销和系统稳定性之间的关系
- 开销评估:在采取恢复技术前,评估撤销进程或剥夺资源带来的系统开销,包括数据恢复成本、进程重新启动成本、状态维护成本等。例如,对于重要且复杂的进程,撤销可能带来巨大数据恢复成本,应谨慎考虑。
- 稳定性优先:优先选择对系统稳定性影响小的恢复技术。如尽量避免撤销关键业务进程,优先尝试剥夺非关键资源。若剥夺资源能解决死锁且对进程影响小,优先采用该方法。
- 动态调整:根据系统运行状态动态调整恢复策略。若系统负载较低,可选择开销稍大但能彻底解决死锁的方法;系统负载高时,优先选择快速且对系统影响小的方法,如优先剥夺少量资源尝试解决死锁,不行再考虑撤销进程。
- 预防结合:加强死锁预防机制,减少死锁发生概率,降低恢复开销。如采用资源分配图算法提前检测死锁可能性,避免死锁形成,从而减轻恢复时平衡开销与稳定性的压力。