操作系统

Deep Dive · Virtualization

虚拟化与
容器

概念层:CPU / 内存怎么虚,容器三支柱是什么。不绑定具体 hypervisor 小版本,也不把容器写成一种新的处理机调度算法。408 主线仍在全书。

01CPU 虚拟化三代路径

概念层 · 不绑定版本动机线,不是某代 Intel 手册摘录。
陷入模拟→二进制翻译→硬件辅助
  • 陷入模拟:敏感指令落入监控器,由软件模拟。经典陷阱是:并非所有敏感指令都会陷入。
  • 二进制翻译:在软件里改写指令流,补上那些不陷入的敏感操作。
  • 硬件辅助:Intel VT-x、AMD-V 一类扩展提供客户态 / 根态切换,减少纯软件翻译。

02内存虚拟化

概念层客户机有自己的页表;还要再映到宿主机物理页。

影子页表:监控器维护「客户虚地址 → 宿主机物理页」的合成表,客户改页表要陷入。扩展页表(Intel EPT / AMD NPT)让硬件走两层翻译,少一次软件合成。

客户页表 P=0/权限失败 → guest 可见的缺页异常;EPT/NPT 映射缺失或权限问题 → VM-exit(EPT violation),由 hypervisor 处理。不得把两者混称同一种缺页。

03容器基础机制

概念层容器共享宿主内核,隔离用户态视图。内核漏洞的爆炸半径与虚拟机不同。
  • namespace:pid、挂载、网络、用户等名字空间,让进程看见不同的「世界」。
  • cgroups:限制 CPU、内存、I/O 等用量。
  • 联合文件系统:多层镜像叠成可写根,是打包分发手段,不是第三种 408 文件分配。

Kubernetes 一句话:多机上的容器编排控制面,按声明把负载放到节点。本页不展开对象模型和发行版。

04VM 与容器

虚拟机容器
内核客户机通常自带内核共享宿主机内核
隔离硬件/监控器边界名字空间 + 控制组
启动物整机镜像用户态根文件系统
不是一种新的 408 调度算法一种新的 408 调度算法