VMX(1)

您所在的位置:网站首页 vmware打开vmx文件没反应 VMX(1)

VMX(1)

2023-12-14 21:50| 来源: 网络整理| 查看: 265

VMX(Virtual Machine Extension)是Intel 64和IA-32架构处理器级别的功能,用于支持虚拟化。VMX支持两种类型的软件:

Virtual-machine monitor(VMM),VMM对处理器和平台硬件具有完全的控制权限。VMM为客户软件提供虚拟处理器的抽象,从而让客户软件能够直接在逻辑CPU上跑。客户软件(Guest software)。每个虚拟机(VM)就是一个客户软件运行环境。

系统软件可以通过CPUID指令来判断处理器是否支持VMX,如果CPUID.1.ECX.VMX[bit5] = 1,那么当前处理器支持VMX,否则,当前处理器不支持VMX功能。

 

VMX包括两种VMX操作操作模式:

VMX根操作(VMX root operation)模式,通常VMM将会在这种模式下运行;VMX非根操作(VMX non-root operation),通常客户软件(虚拟机)将在这种环境下运行。

两种类型的操作之间的转换称作VMX转换,从根操作模式转换到非根操作模式称作VMX进入(VMX Entry),相反从非根操作模式转换到根操作模式称作VMX退出(VMX Exit)。

    当处理器运行于VMX根操作模式的时候,它类似于运行在没有打开VMX功能的环境下,跟不打开VMX功能的主要区别是,在VMX根操作模式中,可以执行VMX相关指令,并且有某些制寄存器的写被限制了

    当处理器运行于VMX非根操作模式的时候,处理器的某些行为被限制住或者被更改以便实现虚拟化,即某些指令或者事件会引起VM exits,从而让处理器从VMX非操作模式退出到根操作模式的VMM里,最终让VMM去模拟这些指令的行为从而实现虚拟化。

    另外,VMX的两种操作模式和处理器的运行级别是正交的,即在VMX根操作模式或者VMX非根操作模式中,都有相应的从ring0 ~ ring3的运行级别,而且两种模式下的各种运行级别是相互独立的。

    VMX功能尽量让软件不能从某个控制寄存器中得知当前自己正运行在VMX非特权模式下,这样就可以防止软件知道自己是否运行在一个虚拟机中。但是VMM其实是可以通过对某些指令的模拟,绕过这个机制的,比如在KVM中,KVM模块对CPUID指令的模拟,让虚拟机中执行CPUID指令的时候返回KVM相关的信息。

 

从最高层次来看处理器使用VMX的步骤如下:

通过CPUID指令判断VMX功能是否被当前处理器支持;如果当前处理器支持VMX功能,那么通过设置CR4.VMXE[bit13] = 1来打开VMX功能;通过VMXON指令开启VMX功能,并且激活VMM;在VMX中可以通过VM Entry和VM Exit来进入客户虚拟机或者返回到VMM中,即切换到VMX非根操作模式或者切换到VMX根操作模式,也可以利用此操作来切换运行的客户虚拟机;通过VMXOFF来关闭VMX功能,从而终止VMX的操作。

VMX非根操作模式和VMX转换都由位于内存的VMCS(Virtual Machine Control Structure)数据结构控制,每个逻辑CPU都有一个包含指向VMCS指针的寄存器。VMCS指针通过VMPTRST和VMPTRLD指令来读和写,并且VMM可以通过VMREAD、VMWRITE和VMCLEAR指令来配置VMCS。

同时也欢迎关注同名微信公众号“河马虚拟化”第一时间获取最新文章。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3