633 字
3 分钟
调度指标有哪些?什么是优先级反转
评价调度策略要先定义指标。周转时间是任务从提交到完成的总时长;等待时间是任务处于就绪队列等待 CPU 的累计时长,不含运行和阻塞等待;响应时间通常指提交到首次获得响应的时间,交互系统尤其关注,但题目需明确响应的定义;吞吐量是单位时间完成任务数。实时调度还需关注截止期限违约率和最坏响应时间。平均值之外,尾延迟与公平性也可能是服务端更重要的目标。
优先级反转发生在高优先级任务等待低优先级任务持有的锁时,而中优先级任务不断抢占低优先级任务,使低优先级者迟迟不能运行、释放锁。结果看起来像高优先级任务被中优先级任务间接阻塞。经典实时系统案例显示,这可能让高优先级任务错过截止期限。
常见缓解方法包括缩短临界区、避免持锁执行慢操作、使用优先级继承或优先级上限协议。优先级继承会在高优先级任务等待锁时,临时提升锁持有者的优先级,使其尽快运行并释放锁;释放后再恢复原优先级。它需要调度器和锁实现支持,且要注意多锁嵌套和优先级恢复规则。
公平性和优先级并非简单二选一。实时任务可能需要严格优先级保证,普通任务则可借助时间片、权重、公平队列或老化避免长期饥饿。调度方案应结合负载目标和最坏情况,而不能只比较平均等待时间。
常见追问
Q:等待时间包含 I/O 阻塞时间吗?
A:调度理论中的等待时间通常指在就绪队列等待 CPU 的时间;I/O 阻塞属于等待事件时间,应与就绪等待区分。
Q:优先级反转是死锁吗?
A:不是。通常低优先级持锁者仍能运行并最终释放锁,只是被中优先级任务延迟;死锁则是循环等待造成无法推进。
Q:优先级继承会永久改变线程优先级吗?
A:不会。通常在等待关系解除、锁释放后恢复原优先级;准确规则取决于调度器和锁协议。
调度指标有哪些?什么是优先级反转
https://blog.xqcherry.top/posts/interview/operating-system/scheduling-metrics-priority-inversion/ 目录