1.VMCS的组成
有三部分:偏移0处是版本标识,偏移4处是中止指示,偏移8处是VMCS的数据域,其中第三部分才是我们要考虑的重点。它是被保存在内存中的。
2,为什么要引入VMCS
这完全是由于Intel VT_x来引起的,它主要被CPU进行操作,然后保存着VCPU的相关寄存器的信息和内容。可以这么理解,一个物理CPU通过VMCS能够获得每个虚拟CPU的各种信息。另外VT_x也提供了不少指令用于CPU去直接访问VMCS。
3,VMCS数据域的详细分析:
包含了6个域,客户机状态域,宿主机状态域,VM_ENTRY控制域,VM_EXECUTION控制域,VM_EXIT控制域,VM_EXIT信息域。
下面逐一分析:
客户机状态域,用户保存在非根模式下CPU的状态,当发生VM_Entry的时候,CPU自动将客户机的状态保存和加载到CPU中,即表示从VMM的根模式进入非根模式。
当发生VM_Exit的时候 ,CPU自动将CPU的状态保存回客户机状态域。