本章总结了 CPU 虚拟化与调度的核心逻辑,重点在于如何从“机制”过渡到“策略”。
机制 vs 策略:回顾与升华
在 CPU 虚拟化的实现中,操作系统需要解决两个层面的问题:
-
机制(Mechanism):回答“如何(How)”做。
- 例如:上下文切换(Context Switch)。它是实现虚拟化的底层工具,允许 OS 停止一个程序并启动另一个。
- 机制通常由硬件支持(如时钟中断、陷阱表)和底层汇编代码实现。
-
策略(Policy):回答“哪个(Which)”做。
- 例如:调度算法(Scheduling Algorithm)。在众多就绪进程中,决定现在应该运行哪一个。
- 策略是 OS 内的高级逻辑,通常基于工作负载的特征(如运行时间、I/O 行为)进行决策。
调度算法的演进路径
从简单的假设到复杂的现实,调度算法经历了一系列权衡:
核心挑战:缺乏先验知识
调度程序面临的最大挑战是:在不知道进程运行多长时间的情况下,如何做出最优决策?
学习与反馈现代调度器(如 MLFQ)通过观察进程的行为(是否频繁放弃 CPU)来学习其特性,从而动态调整优先级。这体现了操作系统设计中的一种核心智慧:利用历史经验预测未来需求。