VT 简介

VT 简介

VT 简介

虚拟机扩展定义对 IA-32 处理器上的虚拟机的处理器级支持。支持两种主要软件类别:

  • 虚拟机监视器 (VMM)- VMM 充当主机,完全控制处理器和其他平台硬件。VMM 为来宾软件(请参阅下一段)提供虚拟处理器的抽象,并允许它直接在逻辑处理器上执行。VMM 能够保留对处理器资源、物理内存、中断管理和 I/O 的选择性控制。
  • 来宾软件 (VM)- 每个虚拟机都是一个来宾软件环境,支持由操作系统 (OS) 和应用程序软件组成的堆栈。每个虚拟机都独立于其他虚拟机运行,并在同一接口上使用物理平台提供的处理器、内存、存储、图形和 I/O。软件堆栈就像在没有 VMM 的平台上运行一样。在虚拟机中执行的软件必须以较低的特权运行,以便 VMM 可以保留对平台资源的控制。

VT 操作简介

虚拟化的处理器支持由一种称为 VMX 操作的处理器操作形式提供。有两种类型的 VMX 操作:VMX 根操作和 VMX 非根操作。通常,VMM 将在 VMX 根操作中运行,客户机软件将在 VMX 非根操作中运行。VMX 根操作和 VMX 非根操作之间的转换称为 VMX 转换。有两种类型的 VMX 转换。转换为 VMX 非根操作称为VM进入。从 VMX 非根操作到 VMX 根操作的转换称为VM退出。
VMX 根操作中的处理器行为与 VMX 操作外部的处理器行为非常相似。主要区别在于一组新指令(VMX 指令)可用,并且可以加载到某些控制寄存器中的值是有限的。
VMX 非根操作中的处理器行为受到限制和修改,以促进虚拟化。某些指令(包括新的 VMCALL 指令)和事件会导致 VM 退出到 VMM,而不是其常规操作。由于这些虚拟机退出会替换普通行为,因此 VMX 非根操作中的软件功能受到限制。正是此限制允许 VMM 保留对处理器资源的控制。
没有软件可判断,其设置指示逻辑处理器是否处于 VMX 非根操作状态。
这一事实可能允许 VMM 阻止 VM 软件确定它是否在虚拟机中运行。
由于 VMX 操作甚至对以当前权限级别 (CPL) 0 运行的软件也施加了限制,因此客户机软件可以在最初设计的权限级别下运行。此功能可以简化 VMM 的开发。

VMM 软件的生命周期

下面图片说明了 VMM 及其来宾软件的生命周期以及它们之间的交互。以下各项总结了该生命周期:

  • 软件通过执行 VMXON 指令进入 VMX 操作。
  • 使用 VM 条目,VMM 可以将来宾输入到虚拟机中(一次一个)。VMM 使用指令 VMLAUNCH 和 VMRESUME 影响 VM 条目;它使用 VM 出口重新获得控制权。
  • VM 退出将控制权转移到 VMM 指定的入口点。VMM 可以采取适合 VM 退出原因的操作,然后可以使用 VM 条目返回到虚拟机。
  • 最终,VMM 可能会决定自行关闭并退出 VMX 操作。它通过执行 VMXOFF 指令来实现此目的。
    生命周期

虚拟机控制结构

VMX 非根操作和 VMX 转换由称为虚拟机控制结构 (VMCS) 的数据结构控制。
对 VMCS 的访问通过称为 VMCS 指针的处理器状态组件(每个逻辑处理器一个)进行管理。VMCS 指针的值是 VMCS 的 64 位地址。VMCS 指针是使用 VMPTRST 和 VMPTRLD 指令读取和写入的。VMM 使用 VMREAD、VMWRITE 和 VMCLEAR 指令配置 VMCS。
VMM 可以对其支持的每个虚拟机使用不同的 VMCS。对于具有多个逻辑处理器(虚拟处理器)的虚拟机,VMM 可以为每个虚拟处理器使用不同的 VMCS。

查询对 VMX 的支持

在系统软件进入 VMX 操作之前,它必须查询处理器中是否存在 VMX 支持。
系统软件可以使用 CPUID 确定处理器是否支持 VMX 操作。如果 CPUID.1:ECX.VMX[5] = 1,则支持 VMX 操作。
VMX 体系结构设计为可扩展的,以便 VMX 操作中的未来处理器可以支持 VMX 体系结构的第一代实现中不存在的其他功能。可扩展 VMX 功能的可用性使用一组 VMX 功能 MSR 报告给软件。
图 23-1。虚拟机监视器和来宾的交互

启用和进入 VMX 操作

在系统软件可以进入 VMX 操作之前,它通过设置 CR4.VMXE[13] = 1。然后通过执行 VMXON 指令进入 VMX 操作。如果未 CR4.VMXE[13] = 0 执行 VMXON 会导致无效操作码异常 (#UD)。一旦进入 VMX 操作,就无法清除 CR4.VMXE。系统软件通过执行 VMXOFF 指令离开 VMX 操作。执行 VMXOFF 后,可以在 VMX 操作之外清除 CR4.VMXE。
VMXON还由IA32_FEATURE_CONTROL MSR(MSR地址3AH)控制。重置逻辑处理器时,此 MSR 将清除为零。MSR的相关部分是:

  • 位 0 是锁定位。如果清除此位,VMXON 将导致常规保护异常。如果设置了锁定位,则此 MSR 的 WRMSR 会导致常规保护异常;在上电复位条件之前,无法修改 MSR。系统 BIOS 可以使用此位为 BIOS 提供设置选项,以禁用对 VMX 的支持。要在平台中启用 VMX 支持,BIOS 必须设置位 1、位 2 或两者(见下文)以及锁定位。
  • 位 1 在 SMX 操作中启用 VMXON。如果清除此位,则在 SMX 操作中执行 VMXON 会导致常规保护异常。尝试在不支持 VMX 操作和 SMX 操作的逻辑处理器上设置此位会导致常规保护异常。
  • 位 2 在 SMX 操作之外启用 VMXON。如果清除此位,则在 SMX 操作之外执行 VMXON 会导致常规保护异常。尝试在不支持 VMX 操作的逻辑处理器上设置此位会导致常规保护异常。

在执行 VMXON 之前,软件应分配一个自然对齐的 4 KB 内存区域,逻辑处理器可以使用该区域来支持 VMX 操作。此区域称为 VMXON 区域。VMXON 区域的地址(VMXON 指针)在 VMXON 的操作数中提供。

对 VMX 操作的限制

VMX 操作对处理器操作施加了限制。具体如下:

  • 在 VMX 操作中,处理器可能会将 CR0 和 CR4 中的某些位固定为特定值,而不支持其他值。如果这些位中的任何一个包含不受支持的值,则 VMXON 将失败。在 VMX 操作(包括 VMX 根操作)中使用任何 CLTS、LMSW 或 MOV CR 指令时,尝试将这些位之一设置为不受支持的值会导致常规保护异常。VM进入 或 VM退出 无法将这些位中的任何一个设置为不受支持的值。软件应参考 VMX 功能 MSR IA32_VMX_CR0_FIXED0 和 IA32_VMX_CR0_FIXED1,以确定如何修复 CR0 中的位。对于 CR4,软件应参考 VMX 功能 MSR IA32_VMX_CR4_FIXED0 和 IA32_VMX_CR4_FIXED1。
  • 如果逻辑处理器处于 A20M 模式,VMXON 将失败。一旦处理器处于 VMX 运行状态,A20M 中断就会被阻止。因此,在VMX操作中不可能处于A20M模式。
  • 每当逻辑处理器处于 VMX 根操作状态时,INIT 信号就会被阻止。在 VMX 非根操作中不会阻止它。相反,INIT 会导致 VM 退出。
    ,INIT 信号就会被阻止。在 VMX 非根操作中不会阻止它。相反,INIT 会导致 VM 退出。
  • 英特尔处理器跟踪(英特尔 PT)只能在 VMX 操作中使用,当IA32_VMX_MISC[14] = 1 时。在支持英特尔 PT 但不允许在 VMX 操作中使用的处理器上,执行 VMXON 会清除IA32_RTIT_CTL.TraceEn,在 VMX 操作(包括 VMX 根操作)中写入IA32_RTIT_CTL的任何尝试都会导致常规保护异常。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小烟囱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值