第 11 章 关于 CPU 调度的总结对话

本章总结了 CPU 虚拟化与调度的核心逻辑,重点在于如何从“机制”过渡到“策略”。

机制 vs 策略:回顾与升华

在 CPU 虚拟化的实现中,操作系统需要解决两个层面的问题:

  1. 机制(Mechanism):回答“如何(How)”做。

    • 例如:上下文切换(Context Switch)。它是实现虚拟化的底层工具,允许 OS 停止一个程序并启动另一个。
    • 机制通常由硬件支持(如时钟中断、陷阱表)和底层汇编代码实现。
  2. 策略(Policy):回答“哪个(Which)”做。

    • 例如:调度算法(Scheduling Algorithm)。在众多就绪进程中,决定现在应该运行哪一个。
    • 策略是 OS 内的高级逻辑,通常基于工作负载的特征(如运行时间、I/O 行为)进行决策。

调度算法的演进路径

从简单的假设到复杂的现实,调度算法经历了一系列权衡:

  • 基础指标:周转时间(性能) vs 响应时间(交互性)。
  • 简单算法:FIFO(先进先出)、SJF最短任务优先)、STCF(最短完成时间优先)。
  • 现代算法
    • RR(轮转):优化响应时间,但牺牲周转时间。
    • MLFQ多级反馈队列:通过历史行为预测未来,兼顾周转与响应。
    • 比例份额(彩票/步长):确保公平分配 CPU 份额。

核心挑战:缺乏先验知识

调度程序面临的最大挑战是:在不知道进程运行多长时间的情况下,如何做出最优决策?

学习与反馈

现代调度器(如 MLFQ)通过观察进程的行为(是否频繁放弃 CPU)来学习其特性,从而动态调整优先级。这体现了操作系统设计中的一种核心智慧:利用历史经验预测未来需求。