系统虚拟化的核心任务是CPU虚拟化,本篇博客主要介绍kvm中采用的cpu虚拟化技术。
硬件辅助CPU虚拟化技术——VT-x
Intel VT中的VT-x(Intel Virtualization technology for x86)技术扩展了传统的IA32处理器架构,为IA32架构的处理器虚拟化提供了硬件支持。
VMX操作模式
VT-x引入了两种操作模式,统称为VMX操作模式。
1. 根操作模式:VMM运行所处的模式。
2. 非根操作模式:客户机运行所处的模式。
这两种操作模式和IA32特权级0 ~ 特权级3是正交的,即每种操作模式下都有相应的特权级0 ~ 特权级3。
所以在VT-x使用的情况下,描述程序运行在某个特权级,例如特权级0,还必须指出当前是处于根模式还是非根模式。
为什么要引入两种操作模式?
指令的虚拟化是通过“陷入再模拟“的方式实现的,而IA32架构有19条敏感指令不能通过这种方法处理,导致了虚拟化漏洞。
最直接的解决办法,是使这些敏感指令能触发异常——但这种方法会改变这些指令的语义,导致与原有软件不兼容。
为此,就引入了新的模式。
在非根模式下,所有敏感指令(包括19条不能被虚拟化的敏感指令)的行为都被重新定义,使得它们能不经虚拟化就直接运行或通过“陷入再模拟”的方式来处理。
在根模式下,所有指令的行为和传统IA32一样,没有改变,因此原有的软件都能正常运行。