VMX和VMCS

来源:互联网 发布:北京优化公司 编辑:程序博客网 时间:2024/04/30 02:10

VMX

    Intel VT技术引入了一种新的处理器操作称为VMX(Virtual Machine Extensions)。VMX操作可以在根状态或非根状态下执行,通常VMM在根状态下执行而客户机软件则运行在非根状态。VMM可以通过虚拟机进入(VM Entry)使处理器进入VMX非根状态,相反通过虚拟机退出(VM Exit)可以使控制器回到VMX根状态。    为了实现硬件虚拟化,Intel在VT-X技术里面增加了12条新的VMX指令。    VMREAD   读取VMCS的一个组成部分,并将它存为一个目的操作数。    VMWRITE  将一个源操作数的信息写入VMCS的一个组成部分,这个源操作数可以是寄存器操作数或存储器操作数。    VMCALL   允许一个客户机在VMX非根操纵下来请求VMM为它服务。本指令会产生一个VM Exit将控制转移到VMM。    VMRESUME 恢复一个由当前VMCS所管理的虚拟机的状态。本指令的执行会发生一个VM Entry将控制转移到VM。

VMCS

    VMCS区域有4KB的线性地址空间,包括:    ① 32位的VMCS版本标识    ② 32位的VMX-abort指示器     ③ VMCS数据区    VMCS数据区在逻辑上可以分为如下6组:    ① 客户机状态区域: 在VM Exit时客户机处理器状态被保存在这个区域,而VM Entry时客户机处理器状态从这个区域载入。    ② 宿主机状态区域: 在VM Exit时宿主机处理器状态从这个区域载入。    ③ VM执行控制区域: 这个区域控制着VMX非根操作时处理器的行为。    ④ VM退出控制区域: 这个区域控制着VM Exit。     ⑤ VM进入控制区域: 这个区域控制着VM Entry。    ⑥ VM退出信息区域: 这个区域在VM Exit时收集信息并描述VM Exit的原因和类型,这个区域是只读的。