633 字
3 分钟
调度指标有哪些?什么是优先级反转
  1. 1操作系统面试学习路线与知识地图
  2. 2什么是用户态和内核态
  3. 3什么是系统调用?它和普通函数调用有什么区别
  4. 4进程和线程有什么区别
  5. 5进程的五种状态:新建、就绪、运行、阻塞与终止
  6. 6fork、exec 和 wait 分别做什么
  7. 7什么是竞态条件和临界区?如何保证互斥
  8. 8互斥锁和自旋锁有什么区别?分别适合什么场景
  9. 9死锁的四个必要条件是什么?如何逐个预防
  10. 10缺页异常如何处理?虚拟内存不等于 Swap
  11. 11阻塞、非阻塞、同步、异步 I/O 怎么区分
  12. 12抢占式调度是什么?SJF 和 MLFQ 适合什么假设
  13. 13进程间通信如何选择?管道、共享内存、信号和 Socket
  14. 14线程切换时,操作系统要做哪些操作
  15. 15进程上下文切换要保存什么?为什么有开销
  16. 16死锁是什么?如何预防和避免死锁?
  17. 17银行家算法如何避免死锁?死锁检测后怎样恢复
  18. 18活锁、饥饿和死锁有什么区别
  19. 19进程调度算法:FCFS、SJF、优先级、时间片轮转与多级反馈队列
  20. 20调度指标有哪些?什么是优先级反转本文
  21. 21为什么要有虚拟内存
  22. 22TLB、多级页表和虚拟地址转换是怎么工作的
  23. 23什么是分段,什么是分页
  24. 24页面置换算法有哪些?FIFO、LRU 和 Clock
  25. 25信号量是什么?计数信号量和二元信号量怎么用
  26. 26条件变量是什么?为什么要和互斥锁配合使用
  27. 27进程间通信方式:管道、消息队列、共享内存、信号量与套接字
  28. 28I/O 模型有哪些:阻塞、非阻塞与多路复用
  29. 29select、poll 和 epoll 有什么区别
  30. 30epoll 的 LT 和 ET 模式有什么区别
  31. 31什么是异步 I/O?它和非阻塞、多路复用的区别
  32. 32什么是僵尸进程和孤儿进程?如何处理
  33. 33原子操作是什么?原子性、可见性和有序性有什么区别
  34. 34什么是工作集和抖动?内存不足时为何系统变慢
  35. 35mmap 是什么?文件映射和匿名映射怎么理解
  36. 36什么是写时复制?fork 和私有映射如何利用 COW

评价调度策略要先定义指标。周转时间是任务从提交到完成的总时长;等待时间是任务处于就绪队列等待 CPU 的累计时长,不含运行和阻塞等待;响应时间通常指提交到首次获得响应的时间,交互系统尤其关注,但题目需明确响应的定义;吞吐量是单位时间完成任务数。实时调度还需关注截止期限违约率和最坏响应时间。平均值之外,尾延迟与公平性也可能是服务端更重要的目标。

优先级反转发生在高优先级任务等待低优先级任务持有的锁时,而中优先级任务不断抢占低优先级任务,使低优先级者迟迟不能运行、释放锁。结果看起来像高优先级任务被中优先级任务间接阻塞。经典实时系统案例显示,这可能让高优先级任务错过截止期限。

常见缓解方法包括缩短临界区、避免持锁执行慢操作、使用优先级继承或优先级上限协议。优先级继承会在高优先级任务等待锁时,临时提升锁持有者的优先级,使其尽快运行并释放锁;释放后再恢复原优先级。它需要调度器和锁实现支持,且要注意多锁嵌套和优先级恢复规则。

公平性和优先级并非简单二选一。实时任务可能需要严格优先级保证,普通任务则可借助时间片、权重、公平队列或老化避免长期饥饿。调度方案应结合负载目标和最坏情况,而不能只比较平均等待时间。

常见追问#

Q:等待时间包含 I/O 阻塞时间吗?
A:调度理论中的等待时间通常指在就绪队列等待 CPU 的时间;I/O 阻塞属于等待事件时间,应与就绪等待区分。

Q:优先级反转是死锁吗?
A:不是。通常低优先级持锁者仍能运行并最终释放锁,只是被中优先级任务延迟;死锁则是循环等待造成无法推进。

Q:优先级继承会永久改变线程优先级吗?
A:不会。通常在等待关系解除、锁释放后恢复原优先级;准确规则取决于调度器和锁协议。

调度指标有哪些?什么是优先级反转
https://blog.xqcherry.top/posts/interview/operating-system/scheduling-metrics-priority-inversion/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0