面试题答案
一键面试设计思路
- 资源优先级:根据资源对系统关键功能的影响程度,为不同类型资源分配优先级。例如,对于核心数据存储资源优先级设为高,临时缓存资源优先级设为低。
- 进程重要性:按照进程的功能性质(如系统守护进程、关键业务进程等)赋予进程重要性权重。重要性高的进程在死锁解除中尽量保留。
- 性能开销:在解除死锁时,优先选择终止或挂起那些释放资源后对系统整体性能影响小的进程。
算法实现框架
- 检测死锁:利用资源分配图算法(如死锁定理算法)周期性检测系统是否存在死锁。若存在,获取死锁相关的进程和资源信息。
- 评估资源与进程:根据预设的资源优先级和进程重要性权重,计算每个死锁相关进程持有的资源重要性总和以及进程本身的重要性。
- 选择牺牲进程:优先选择持有低优先级资源且本身重要性低的进程作为解除死锁的牺牲者。如果存在多个候选进程,进一步比较释放资源后对系统性能的影响,选择影响最小的。
- 解除死锁:终止或挂起选定的牺牲进程,释放其占用的资源,尝试打破死锁循环。
有效性评估
- 死锁解除率:统计一段时间内死锁发生次数和成功解除死锁的次数,计算死锁解除率 = 成功解除死锁次数 / 死锁发生次数,该指标越高表明策略越有效。
- 死锁复发率:记录死锁解除后在一定时间间隔内再次出现死锁的频率,死锁复发率越低说明策略对死锁的根除效果越好。
性能评估
- 系统吞吐量:对比实施死锁解除策略前后系统单位时间内完成的任务数量,吞吐量提升或保持稳定说明策略对系统性能开销影响小。
- 响应时间:测量关键进程或典型业务操作在死锁发生及解除过程中的响应时间变化,响应时间无明显增加表明策略性能良好。