[翻译][原创]虚拟机扩展(VMX)简介(VT-X)
发表于:
2012-5-11 00:31
21251
[翻译][原创]虚拟机扩展(VMX)简介(VT-X)
20.1 概述
这个章节描述虚拟机的基础架构和VMX支持处理器硬件虚拟化的多个软件环境的概述。
有关 VMX 指示的信息在 Intel(R) 64 和 IA-32 架构软件开发人员手册VMX的其他方面和系统编程注意事项在 Intel(R) 64 和 IA-32 架构软件开发人员手册中被描述。
20.2 虚拟机架构
VMX定义处理优先等级是对运行在IA-32 处理器上的虚拟机的支持。
IA-32 处理器。软件的两种重要级别是被支持的:
* 虚拟机监控器(VMM) – 虚拟机监控器扮演着主计算机并拥有对处理器和其他平台硬件的全面控制的能力。虚拟机监控器用一个虚拟的抽象的处理器处理客户软件(看下一个段落)并且允许它直接在逻辑处理器上执行。虚拟机监控器能够选择性的保留和控制处理器资源,物理内存,中断管理,和I / O
• 客户软件- 每个虚拟机(VM)是一个客户机软件环境,支持栈组成的作业系统(OS)和应用程序。每次操作与其他虚拟机无关且使用物理平台提供的处理器,内存,存储,图形和I / O的一样的接口。该软件堆栈的行为就好像它是在一个没有VMM的平台上运行。软件执行在一个虚拟机必须运行在减少的特权等级,从而使VMM可以保留平台资源的控制。
20.3VMX的操作简介
处理器对虚拟化的支持由被称为 VMX 操作的一种处理器操作的形式而提供的。有两种类型的VMX操作:VMX根操作模式和VMX非根操作模式。在一般情况下,VMM将运行在VMX根操作模式,客户软件将运行在VMX的非root操作模式。切换在VMX根操作模式和VMX非root操作模式之间被称为VMX转换。有两种类型的VMX转变。进到 VMX 非根操作称为 VM 进入。从 VMX 非根操作模式到 VMX 根操作模式的切换称为 VM 退出。
在 VMX 根操作模式中的处理器行为很大程度上因为它在 VMX 操作的外面。主要的区别是有一套可利用的新指令集(VMX指令),能载入到某些控制寄存器的数值是被限制的。
处理器在VMX非根操作模式下的行为是被限制的并且被修改以促进虚拟化。与正常运作不同的是某些指令(包括新VMCALL指令)和事件导致虚拟机退出到VMM的。由于这些
VM 退出替换正常行为,在 VMX 非根操作模式中软件的功能被限制。正是这种限制,允许VMM保留处理器资源的控制
处理器资源。
没有软件可见位明确设置是否逻辑处理器在VMX非根操作模式。这个事实可能允许 VMM 阻止客户软件来决定它运行在一台虚拟的机器。
因为 VMX 操作放置限制条件甚至软件运行在ring0 ,客人软件能运行在特权等级,它最初被策划。这种能力可以简化一个VMM发展。
20.4 VMM软件的生命周期
图20-1说明了VMM的生命周期和它的客户软件,以及它们之间的相互作用。以下条款总结那个生命周期:
* 软件进入 VMX 操作模式通过执行一条 VMXON 指令。
• 通过VM进入,VMM能进入到客户虚拟机(每次一个)
。VMM利用VMLAUNCH指令和VMRESUME影响VM进入;它使用VM退出重新获得控制权。
• VM退出并转移控制到VMM中指定的一个入口点。VMM能对VM退出的原因采取适当的行动,并且能利用VM进入返回到虚拟机。
•最终VMM可决定关闭自己离开vmx运作。 它仅仅通过执行VMXOFF指令来实现。
20.5虚拟机控制结构(VMCS)
VMX非root操作和VMX转换是由一个称为虚拟机控制结构(的VMCS)数据结构所控制。
访问VMCS结构是通过一个被称为VMCS指针的处理器状态组件所管理的(每个逻辑处理器一个)。该VMCS指针的值是VMCS结构的64位地址。VMCS结构指针利用VMPTRST指令和VMPTRLD指令来读取和写入。VMM使用VMREAD,VMWRITE和VMCLEAR指令配置VMCS结构。
VMM可以为每个虚拟机使用不同的VMCS。对于具有多个(虚拟处理器)逻辑处理器的虚拟机,VMM可以为每个虚拟处理器使用不同的VMCS。
20.6揭秘对VMX 的支持
在系统软件进入到的VMX操作模式之前,必须确定处理器支持VMX。系统软件可以使用CPUID指令来决定处理器是否支持VMX操作模式。如果CPUID.1:ECX.VMX [5位] = 1,那么的VMX操作支持。见第3章“指令集参考手册 A-M,英特尔 ® 64和IA – 32架构软件开发手册,卷2A。
VMX体系结构设计为可扩展,以便在未来的处理器的VMX操作模式可以支持第一代VMX结构所没有的附加功能。可延展的 VMX 的可用性起重要作用被呈报软件使用一套 VMX 能力 MSRs(看附录 G,“报告设施的 VMX 能力)。”
20.7 打开VMX操作模式
系统软件可以进入VMX操作模式之前,它通过设置CR4.VMXE [位13] = 1打开VMX。然后进入的VMX操作模式是通过执行VMXON指令。如果CR4.VMXE = 0执行VMXON指令将引起一个无效操作码异常(#UD)。一旦在 VMX 操作模式中,清除 CR4.VMXE 位是没有可能的(看第 20.8 节)。系统软件通过执行VMXOFF指令离开VMX操作模式。在执行VMXOFF指令离开VMX 操作模式之后CR4.VMXE位可以被清除。
VMXON也受控于IA32_FEATURE_CONTROL MSR(MSR的地址3AH)。当逻辑处理器复位时MSR被清零。MSR 的相关位是:
• 0位是锁位。如果该位是0,VMXON引起通用保护异常。如果锁定位设置,WRMSR指令引起一个通用保护异常;MSR不能进行修改直到电复位。系统BIOS可以使用此位提供的BIOS设置选项来禁用VMX的支持。为了能够在一个平台上启用VMX支持,BIOS中必须设置位1,第2位,或两者(见下文),以及锁定位。
• 位1启用VMXON在SMX运行模式。如果该位是0,在SMX操作模式执行VMXON会导致通用保护异常。企图在逻辑处理器不支持的VMX操作模式和SMX操作模式下设置此位将引起普通保护异常。
20.6) and SMX operation (see Chapter 6, “Safer Mode Extensions Reference,” in Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2B) cause general-protection exceptions.
• 位2启用VMXON在SMX运行模式之外。如果该位是0,在SMX操作模式外执行VMXON指令会引起通用保护异常。企图在逻辑处理器不支持的VMX操作模式下设置此位将引起普通保护异常。
注意
如果自从 GETSEC[SENTER] 最后被执行过后 GETSEC[SEXIT] 从来没有执行那么逻辑处理器是在 SMX 操作模式下。如果 GETSEC[SENTER]从来没有被执行过或者如果 GETSEC[SEXIT] 在 GETSEC[SENTER] 的最后的执行之后被执行,那么逻辑处理器是在 SMX 操作模式外面 。See Chapter 6, “Safer Mode Extensions Reference,” in Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2B.
在执行VMXON之前软件应该分配一个自然对齐的4字节的内存区域,逻辑处理器可以用来支持的VMX操作模式,1。 这个区域被称为 VMXON域 。该VMXON域的地址(VMXON指针)被提供成VMXON的操作数。
1. 未来的处理器可能需要不同数量的内存被保留。 如果是这样,这其实是报告软件使用能力的VMX报告机制。
第21.10.5“VMXON域”软件应该如何初始化和访问VMXON地区的细节。
20.8 VMX操作上的限制
VMX 操作模式对处理器操作执行的限制。这些在下边被详细说明:
• 在操作的VMX,处理器可能固定在某些在CR0和CR4的特定位的特定数值,不支持其他值。如果任何这些位中包含一种不支持的数值,VMXON失败(见 Intel(R) 64 和 IA-32 架构软件开发人员手册,册2B 的第 5 章中看到“VMXON-进入VMX操作模式”)。当在VMX操作模式中,(包括VMX根操作)任何企图利用 CLTS ,LMSW或者MOVCR 指令中的任意一个指令来设置其中的一个位为一个不支持的值将会导致通用保护异常。VM进入或VM退出不能设置给这些位中的任何一个位为不支持的值。2。
注释
在VMX操作模式,第一个处理器支持的VMX操作需要以下位为1:CR0.PE,CR0.NE,CR0.PG和CR4.VMXE。关于CR0.PE和CR0.PG的限制意味着的VMX操作只支持分页保护模式(包括
IA – 32E模式)。因此,客户软件不能运行在非分页保护模式或实地址模式。参阅第27.2,
“支持处理器操作模式在客户环境中,”对于期望怎样才可能使VMM可能支持运行在非分页保护模式或实地址模式的客户软件的讨论。
后来处理器支持VM的执行控制,所谓的“无限制客户”(见21.6.2)。如果这个控制是1,CR0.PE和CR0.PG可能是0在VMX非根操作模式(即使IA32_VMX_CR0_FIXED0能力MSR的报告以其他方式)3。 这种处理器允许
客户机软件运行在非分页保护模式或实地址模式。
* VMXON 失败如果一台逻辑处理器在 A20M 模式中(看“VMXON – ”在 Intel(R) 64 和 IA-32 的建筑软件开发人员的手动,大量的 2B 的第 6 章中“参加 VMX 手术”)。 一旦处理器在 VMX 操作模式, A20M
2。 软件应该咨询 VMX 能力 MSRs IA32 _VMX_CR0 _FIXED0 和 IA32 _VMX_CR0 _FIXED1 确定在 CR0 的哪些位被设置。(见附录G.7)。 对于CR4的,软件应该查询VMX能力MSRs IA32_VMX_CR4_FIXED0和IA32_VMX_CR4_FIXED1(见附录G.8)。
3。 “无限制客”是次要的基于处理器的虚拟机的执行控制。如果主要的基于处理器的虚拟机的执行控制的31位是0,VMX非根操作功能犹如“无限制的客户”VM的执行控制率分别为0。参见第21.6.2。
中断被封锁。因此,它不可能进入A20M模式在VMX模式的时候.
• 每当逻辑处理器运行在VMX根操作模式时INIT信号是被阻塞的。
在VMX非根操作模式中是不被封锁的。相反,INITs导致虚拟机退出(见
第 22.3 节,“VM退出的其他原因)。”
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)