目录
KVM 的 CPU 虚拟化实现
KVM 的 CPU 虚拟化实现依赖硬件辅助虚拟化技术的支撑。KVM 通过一个 Kernel Module 将 HostOS 转变成为一个 VMM,运行在 CPU 的 Root Mode 中,而 GuestOS 运行在 Non-root Mode 上。
在 KVM 完成了 VM 的 vCPU 和 Memory 的初始化之后,QEMU 再通过 ioctl 调用 KVM 的 /dev/kvm 接口完成 VM 的创建,并创建出一个 User Process 来运行。由于 VM 在前期初始化的时候会设置各种寄存器来帮助 KVM 找到启动 Process 的指令入口(main 函数),所以 Process 在调用了 /dev/kvm 接口后,物理 CPU 的控制权就交给了 VM。
添加了 KVM Module 之后的 Kernel 具有 3 种执行模式:
- Kernel mode:对应 CPU 的 Root Mode,负责将 CPU 切换到 Guest mode 执行 GuestOS 代码,并在 CPU 退出