死锁为何会发生,工程系统应如何预防、检测与恢复
简答题中等681 次浏览
参考答案与解析
# 核心结论
死锁是多个执行单元彼此等待对方持有的资源,等待关系形成无法自行解除的环,导致相关操作都不能继续推进。经典模型认为死锁同时需要互斥使用、占有并等待、资源不可抢占和循环等待四个条件。工程治理可以通过破坏其中至少一个条件来预防,也可以允许死锁发生后检测等待环、选择牺牲者并回滚。进程内锁通常优先采用统一加锁顺序和缩短临界区;数据库系统还需要死锁检测、事务回滚和幂等重试;分布式系统则必须额外考虑进程暂停、网络分区和租约过期后的旧持有者。
# 底层机制
假设线程甲持有锁A并等待锁B,线程乙持有锁B并等待锁A,就形成了循环等待。如果资源只能由持有者释放,而双方都必须先获得下一把锁才能执行到释放位置,系统便无
