107 / 163 · C11 · 约 8 分钟
关于虚拟化的对话
先记住这句话
师生通过轻松对话揭示操作系统如何把单一物理CPU变成多个虚拟CPU,让每个程序都以为自己独占处理器。
虚拟化到底在做什么
操作系统把有限的物理硬件抽象成看起来无限的虚拟资源。对CPU来说,就是让每个正在运行的程序都觉得自己拥有一颗完整的处理器,哪怕机器里其实只有一颗。这种假象是现代多任务系统的基础。
为什么程序察觉不到共享
程序大部分时间并不在执行,而是在等待输入、磁盘或锁。操作系统正是利用这些空闲窗口,把CPU悄悄交给另一个程序。当原程序再次醒来时,它看到的仍然是“自己的”处理器,因此从未发现资源被轮流使用。
时间片与快速切换
硬件定时器每隔几毫秒就会打断当前程序。操作系统保存其寄存器和内存映射,再装入另一个程序的状态。这种极短的时间片让多个程序看起来在同时前进,尽管物理上任何瞬间只有一个在真正运行。
虚拟化带来的隔离与效率
因为每个程序都活在自己的虚拟CPU世界里,一个程序崩溃或死循环通常不会直接毁掉其他程序。同时,空闲的CPU时间被立刻再利用,整体硬件利用率远高于早期单任务系统。
常见误区
- 以为必须有多颗物理CPU才能谈虚拟化
- 忘记程序在等待期间根本观察不到CPU被拿走
- 把虚拟CPU想象成零开销的完美复制品
运行一个例子
这一章用官方 PDF 讲清概念;本页不附带可运行程序。
CHECK YOUR UNDERSTANDING
合上答案,试着解释。
如果操作系统把时间片设得极长(比如好几秒),程序还会觉得自己独占CPU吗?为什么?
查看参考答案
不会。长时间片会让程序明显感觉到卡顿和延迟,从而发现自己并没有真正独占处理器。
继续查证
标准草案与官方章节会更新;版本标记只说明示例最低要求。