C++ / a working model

107 / 163   ·   C11   ·   约 8 分钟

关于虚拟化的对话

先记住这句话

师生通过轻松对话揭示操作系统如何把单一物理CPU变成多个虚拟CPU,让每个程序都以为自己独占处理器。

本篇内容
  1. 虚拟化到底在做什么
  2. 为什么程序察觉不到共享
  3. 时间片与快速切换
  4. 虚拟化带来的隔离与效率
  5. 运行示例
  6. 动手练习

官方章节 PDF

虚拟化到底在做什么

操作系统把有限的物理硬件抽象成看起来无限的虚拟资源。对CPU来说,就是让每个正在运行的程序都觉得自己拥有一颗完整的处理器,哪怕机器里其实只有一颗。这种假象是现代多任务系统的基础。

为什么程序察觉不到共享

程序大部分时间并不在执行,而是在等待输入、磁盘或锁。操作系统正是利用这些空闲窗口,把CPU悄悄交给另一个程序。当原程序再次醒来时,它看到的仍然是“自己的”处理器,因此从未发现资源被轮流使用。

时间片与快速切换

硬件定时器每隔几毫秒就会打断当前程序。操作系统保存其寄存器和内存映射,再装入另一个程序的状态。这种极短的时间片让多个程序看起来在同时前进,尽管物理上任何瞬间只有一个在真正运行。

虚拟化带来的隔离与效率

因为每个程序都活在自己的虚拟CPU世界里,一个程序崩溃或死循环通常不会直接毁掉其他程序。同时,空闲的CPU时间被立刻再利用,整体硬件利用率远高于早期单任务系统。

常见误区

  • 以为必须有多颗物理CPU才能谈虚拟化
  • 忘记程序在等待期间根本观察不到CPU被拿走
  • 把虚拟CPU想象成零开销的完美复制品

运行一个例子

这一章用官方 PDF 讲清概念;本页不附带可运行程序。

CHECK YOUR UNDERSTANDING

合上答案,试着解释。

如果操作系统把时间片设得极长(比如好几秒),程序还会觉得自己独占CPU吗?为什么?

查看参考答案

不会。长时间片会让程序明显感觉到卡顿和延迟,从而发现自己并没有真正独占处理器。

继续查证

标准草案与官方章节会更新;版本标记只说明示例最低要求。

回到目录