VT-x技术手册杂记

1.开启和进入VMX操作模式.

  @设置CR4寄存器的 bit 13.即 CR4.VMXE = 1 -->Enable

  @执行vmxon 指令,进入VMX root操作状态.

   (如果 CR4.VMXE = 0 ,执行vmxon 指令会导致一个无效指令操作)

  @执行vmxoff 指令,离开VMX root操作状态.

  @执行完vmxoff 指令后,被置位的 CR4.VMXE会被设置为 0 .

 

2.在执行 vmxon 指令前,应当分配 4kb 内存区域,使得处理器支持VMX操作.

 

3.VMX操作状态限定value只能加载到 CR0和CR4 寄存器中.

    而且以下bits必须被设置为1:

    CR0.PE,CR0.NE,CR0.PG 和 CR4.VMXE.

    @这也指明VMX操作状态只支持页保护模式,

       所以guest software 不能运行在非页保护模式和实模式下.

 

4.VMCS--虚拟机控制结构,来封装所有虚拟机需要维护的信息.

        VMCS由以下指令来操作:

        vmclear:清空VMCS结构

        vmptlrd:修改VMPTR指针

        vmread:读取VMCS

        vmwrite:写入VMCS

 

5.当前运行的虚拟机的VMCS通过一个VMPTR指针来指定,该指针包含4kb边界对其的VMCS物理存储地址.

对应不同虚拟机的多个VMCS结构都能被激活,但每次只允许一个VMCS结构在给定的Processor上运行.

 

6.VMCS的基本格式:

VMCS中保存着各种不同种类的信息,为guest OS 和 host OS 保存的状态信息,

不再限于传统的结构状态,还包括了像segment寄存器等结构隐藏部分的信息,

在保持虚拟机执行行为和普通机上的执行行为一致.

 

VMCS由六个部分组成:

 

@ 状态域:

1.Guset-State Area --> #寄存器状态  #中断状态

    : 当VM exits 和 load VM entires 的时候,将处理器状态保存在 guest-state area.

2.Host-state area --> #寄存器状态

    : 当VM exits的时候,处理器从Host state area 加载状态到自身.

 

@控制域:

3.VM-Execution control filelds (VM运行控制) --> #Pin-based 运行控制 #Processor-based 运行控制. #位图域

    :这个域控制着处理器在VMX non-root 操作状态下的operation.

#Pin-based 运行控制 (异步事件)

        @ Bit 0:set 1,外部中断存在.引发 VM exits    

        @ Bit 3:set 1,NMI 存在.引发 VMExits

#Processor-Based 运行控制 (同步事件)

 

4.VM-entry contorl filelds:(VM进入控制) --> #控制位图 #MSR控制 #事件引发的控制

    :这个域控制VM的进入

5.VM-exit control filelds:(VM退出控制) --> #控制位图 #MSR控制

    :这个域控制VM的退出

 

 @VM退出信息:

6.VM-exit information filelds. (VM退出信息) -->#VM退出信息 #向量化事件退出信息 #取决于事件传送 #取决于指令执行

    :这个域保存VM exits时的信息.并且描述引发 VM exit的原因. 这个域read-only.

 

 

 

posted on 2011-10-12 01:20  coltor  阅读(1225)  评论(0编辑  收藏  举报