23.虚拟机扩展介绍
23.1 概述
本章描述基本的虚拟机架构和虚拟机扩展技术,支持处理器硬件虚拟化;
VMX(virtual – machine extensions)
VMX扩展的指令信息在第2卷里面。VMX的其他方面和系统编程的要点在第3卷。
23.2 虚拟机架构
VMX定义了处理器级别的虚拟机支持在IA-32处理器上。
主要支持两个主要软件:
- VMM(virtual-machine monitor)- 一个VMM作为host可以完全控制处理器和其他平台硬件。一个VMM给客户软件提供抽象的虚拟的处理器并允许在逻辑处理器上直接执行。
一个VMM能够选择性的控制处理器资源,物理内存,中断管理和IO。
2. 客户软件(Guest software)每个VM是一套软件环境,支持os和应用软件。每个虚拟机独立操作,到物理平台的处理器,内存,存储,图像,IO的接口是相同的。软件运行区分不出来VMM。VM里面的软件执行时优先级是降低了的。这样VMM才能控制平台的资源。
23.3 VMX操作介绍
23.4 VMM软件生命周期
见下图,VMM的软件生命周期和它的客户软件交互过程。
- 软件进入VMX操作通过执行VMXON指令
- 使用VM entries,VMM可以进入虚拟机。
VMM可以使用VMLAUNCH和VMRESUME来操作VM entry;使用VM exits拿回控制权
3.VM exits把控制权交给指定的入口。VMM可以根据对应的VM exit的原因做出动作,然后使用VM entry返回到虚拟机。
4.最后,VMM可以关闭自身并离开VMX操作。执行VMXOFF指令
5.
23.5 虚拟机控制结构
VMX非根操作和VMX事务通过VMCS(Virtual-machine control structure)这个数据结构进行控制.
通过处理器的一个状态组件VMCS指针可以访问VMCS(每个逻辑处理器都有一个)。
VMCS指针是64位地址。通过VMPTRST和VMPTRLD进行读写。
配置VMCS使用VMREAD,VMWRITE,VMCLEAR指令进行;
每个虚拟机使用不同的VMCS。如果虚拟机有多个逻辑处理器(虚拟的),VMM也能给每个虚拟处理器使用不同的VMCS。
23.6 VMX的发现支持
在系统软件进入VMX操作之前,必须发现处理器是否支持VMX。
系统软件使用CPUID来进行判断。
如果CPUID.1:ECX.VMX[bit 5]=1,就是支持;
23.7 使能和进入VMX操作
系统软件进入VMX操作之前,设置CR4.VMXE[bit 13]=1来使能VMX。
VMX操作通过执行VMXON指令来进入。
如果没有使能,VMXON会引起一个非法操作异常。
一旦VMX开始操作,不能清除使能位,必须通过VMXOFF指令离开VMX操作;
。。。。
在执行VMXON之前,软件需要申请一块4K边界天然对齐的内存。用于至此和VMX操作,
叫做VMXON region。操作细节见24.11.5 VMXON Region
23.8 VMX操作的限制