MST

星途 面试题库

面试题:并发与同步下死锁恢复策略的权衡

在一个多线程并发执行的系统中,死锁发生后,有终止线程、资源剥夺等恢复策略。请详细分析不同恢复策略在性能、数据一致性等方面的优缺点,并举例说明在何种场景下应优先选择哪种策略。
14.4万 热度难度
操作系统并发与同步

知识考点

AI 面试

面试题答案

一键面试

1. 终止线程策略

  • 优点
    • 性能方面:操作相对简单直接,能快速打破死锁局面,释放系统资源,使得系统可以尽快从死锁状态恢复运行。例如在一些对实时性要求不高,但对资源释放速度有一定要求的批处理系统中,快速终止线程能让系统快速进行下一批任务处理。
    • 数据一致性方面:如果线程执行的任务对数据一致性要求不高,例如只是进行一些日志记录等简单操作,终止线程不会对核心业务数据的一致性造成严重影响。
  • 缺点
    • 性能方面:被终止线程之前所做的工作可能全部白费,造成资源浪费。比如一个长时间运行的复杂计算任务线程被终止,其计算结果丢失,再次运行该任务需要重新开始计算。
    • 数据一致性方面:若线程正在处理关键业务数据,终止线程可能导致数据处于不一致状态。例如在银行转账操作中,一个线程已经完成了从账户A扣款,但还未完成向账户B的入账,此时终止线程,会导致数据不一致。
  • 适用场景:适用于线程任务执行时间较短,且对数据一致性要求较低的场景。比如一些监控线程,定期采集系统运行状态数据,若发生死锁,终止该线程不会对系统核心业务数据造成影响,且能快速恢复系统资源。

2. 资源剥夺策略

  • 优点
    • 性能方面:可以在不终止线程的情况下打破死锁,避免了线程重复执行带来的性能开销。例如在数据库事务中,通过剥夺某事务占用的锁资源,使得其他事务可以继续执行,而无需回滚整个事务重新开始。
    • 数据一致性方面:相较于终止线程策略,对数据一致性影响较小,因为线程不会突然终止,已执行的操作可以在后续继续完成。如在文件系统操作中,某个线程正在对文件进行写入操作,通过资源剥夺让其暂停,待死锁解除后可以继续完成写入,保证文件数据的完整性。
  • 缺点
    • 性能方面:资源剥夺过程本身可能需要额外的系统开销,包括资源状态的检查、剥夺操作的执行等。如果资源剥夺操作频繁,会对系统性能产生较大影响。
    • 数据一致性方面:在剥夺资源过程中,如果处理不当,仍可能导致数据不一致。例如在分布式系统中,资源剥夺可能会引起网络延迟等问题,导致数据同步不及时,进而出现数据不一致。
  • 适用场景:适用于对数据一致性要求较高,且线程执行任务较为复杂、执行时间较长的场景。比如在企业级应用的订单处理系统中,订单的创建、支付等操作涉及多个步骤,对数据一致性要求极高,采用资源剥夺策略可以在不破坏已执行操作的前提下解决死锁问题。