一些 x64 版本的 Windows 使用基于虚拟机监控程序的 Hyper-V 虚拟化技术。 虚拟机监控程序是虚拟化的核心。 它是特定于处理器的虚拟化平台,允许多个独立作系统共享单个硬件平台。
Hyper-V 支持通过分区实现隔离。 分区是由虚拟机监控程序支持的逻辑隔离单元,操作系统在其中执行。 Microsoft虚拟化程序必须至少有一个运行 Windows 的父分区或根分区。 虚拟化管理堆栈在父分区中运行,并且可以直接访问硬件设备。 然后,根分区创建托管来宾作系统的子分区。 根分区使用超大型应用程序编程接口(API)创建子分区。
分区无法访问物理处理器,也不能处理处理器中断。 相反,它们具有处理器的虚拟视图,并在每个来宾分区专用的虚拟内存地址区域中运行。 虚拟机监控程序处理来自处理器的中断,并将其重定向到相应的分区。 Hyper-V 还可以通过使用输入输出内存管理单元(IOMMU)在各种来宾虚拟地址空间之间加速地址转换,该单元独立于 CPU 使用的内存管理硬件运行。 IOMMU 用于将物理内存地址重新映射到子分区使用的地址。
子分区也无权直接访问其他硬件资源,并作为虚拟设备(VDevs)呈现资源的虚拟视图。 对虚拟设备的请求通过 VMBus 或虚拟机管理程序重定向到父分区中的设备,以处理请求。 VMBus 是逻辑分区间通信信道。 父分区托管虚拟化服务提供程序(VSP),这些提供程序通过 VMBus 进行通信以处理来自子分区的设备访问请求。 子分区托管虚拟化服务使用者(VSC),通过 VMBus 将设备请求重定向到父分区中的 VSP。 此整个过程对客操作系统是透明的。
虚拟设备还可以利用名为“启发式 I/O”的 Windows Server 虚拟化功能,用于存储、网络、图形和输入子系统。 启发式 I/O 是高级通信协议(如 SCSI)的专用虚拟化感知实现,可直接利用 VMBus,绕过任何设备仿真层。 这使得通信更高效,但需要一个启发型的来宾,该来宾能感知到虚拟机监控程序和 VMBus。 通过安装 Hyper-V 集成服务提供虚拟化优化的 I/O 和感知虚拟化的内核。 集成组件(包括虚拟服务器客户端 (VSC) 驱动程序)也可用于其他客户端作系统。 Hyper-V 需要包含硬件辅助虚拟化的处理器,例如通过 Intel VT 或 AMD 虚拟化(AMD-V)技术提供。
下图简要概述了 Hyper-V 环境的体系结构。
术语表
- APIC – 高级可编程中断控制器 - 允许将优先级级别分配给其中断输出的设备。
- 子分区 - 托管来宾操作系统的分区 - 子分区对物理内存和设备的所有访问都是通过虚拟机总线(VMBus)或虚拟机监控程序提供的。
- Hypercall – 用于与虚拟机监控程序通信的接口 - Hypercall 接口可适应对虚拟机监控程序提供的优化的访问权限。
- 虚拟机监控程序 – 位于硬件和一个或多个作系统之间的软件层。 其主要作业是提供称为分区的独立执行环境。 虚拟机监控程序控制并仲裁对基础硬件的访问权限。
- IC – 集成组件 - 允许子分区与其他分区和虚拟机监控程序通信的组件。
- I/O 堆栈 – 输入/输出堆栈
- MSR – 内存服务例程
- 根分区 – 有时称为父分区。 管理设备驱动程序、电源管理和设备热添加/删除等计算机级功能。 根分区(或父分区)是唯一有权直接访问物理内存和设备的分区。
- VID – 虚拟化基础结构驱动程序 – 为分区提供分区管理服务、虚拟处理器管理服务和内存管理服务。
- VMBus - 基于通道的通信机制,用于在具有多个活动虚拟化分区的系统上进行分区间通信和设备枚举。 VMBus 随 Hyper-V Integration Services 一起安装。
- VMMS – 虚拟机管理服务 - 负责管理子分区中所有虚拟机的状态。
- VMWP – 虚拟机工作进程 - 虚拟化堆栈的用户模式组件。 工作进程提供从父分区中的 Windows Server 2008 实例到子分区中的来宾操作系统的虚拟机管理服务。 虚拟机管理服务为每个正在运行的虚拟机生成单独的工作进程。
- VSC – 虚拟化服务客户端 – 驻留在子分区中的合成设备实例。 VSC 利用父分区中虚拟化服务提供商(VSP)提供的硬件资源。 它们通过 VMBus 与父分区中的相应 VSP 通信,以满足子分区设备 I/O 请求。
- VSP – 虚拟化服务提供程序 – 驻留在根分区中,并为虚拟机总线(VMBus)上的子分区提供综合设备支持。
- WinHv – Windows 虚拟机监控程序接口库 - WinHv 本质上是分区作系统驱动程序和虚拟机监控程序之间的桥梁,它允许驱动程序使用标准 Windows 调用约定调用虚拟机监控程序
- WMI – 虚拟机管理服务公开一组基于 Windows Management Instrumentation (WMI) 的 API,用于管理和控制虚拟机。