虚拟机的类型
- 8 分钟
虚拟机 (VM) 有两种主要实现:进程 VM 和系统 VM。 以下视频介绍了虚拟机类型的分类:
我们先介绍进程 VM,然后再介绍系统 VM。
进程虚拟机
图 4:进程虚拟机
进程 VM 是能够支持单个进程的 VM(只要进程处于活动状态)。 图 4 演示了进程 VM。 当托管进程停止时,进程 VM 也会终止。 从进程 VM 的角度来看,一台计算机由虚拟内存地址空间、用户级寄存器和分配给进程用于执行用户程序的指令组成。 根据此定义,常规用途 OS 中的进程也可以称为“计算机”。 但是,OS 中的常规进程只能支持针对主机 ISA 编译的用户程序二进制文件。 也就是说,常规进程不支持执行为与主机不同的 ISA 编译的二进制文件。 相反,进程 VM 允许这种情况发生。 进程 VM 可以通过仿真支持与主机 ISA 不同的 ISA。 如图 5 所示,仿真是允许在具有不同接口和功能的系统(目标)上实现一个系统(源)的接口和功能的过程。 稍后将详细讨论仿真。 进程 VM 的抽象由称为“运行时”的虚拟化软件提供(见图 4)。 运行时位于主机 OS 和底层硬件之上的应用程序二进制接口 (ABI) 中。 当来宾和主机 ISA 不同时,正是此运行时在仿真 VM 指令和/或系统调用。
图 5:仿真过程
最后,进程 VM 可能不直接对应于任何物理平台;它主要用于提供跨平台的可移植性。 此类进程 VM 称为高级语言 VM (HLL VM)。 HLL VM 抽离底层硬件资源和 OS 的细节,并允许程序在任何平台上以相同的方式运行。 Java VM (JVM) 和 Microsoft 公共语言基础结构 (CLI) 是 HLL VM 的示例。
总之,进程 VM 与在 OS 上运行的常规进程类似。 但是,进程 VM 允许通过仿真来执行为与主机不同的 ISA 编译的应用程序。
系统虚拟机
与进程 VM 相反,系统 VM 是能够虚拟化包括处理器、内存和 I/O 设备在内的全套硬件资源,从而提供完整系统环境的 VM。 只要系统环境处于活动状态,系统 VM 就可支持 OS 及其相关进程。 图 6 说明了系统 VM。 如前所述,虚拟机监控程序(或 VM 监视器 [VMM])是一款为系统 VM 提供抽象的软件。 它可以置于 ISA 级别,直接放在原始硬件之上和系统映像(例如 OS)之下。 主机平台的硬件资源可以在多个来宾 VM 之间共享。 虚拟机监控程序管理来宾 VM 对硬件资源的分配和访问。 实际上,虚拟机监控程序提供了对共享单个物理系统的多个来宾 VM 进行逻辑隔离的简洁方法。 每个来宾 VM 都以为获取了所有底层硬件资源。
图 6:系统虚拟机
系统 VM 有不同的分类。 图 7 展示了其中三个分类以及传统系统。 在传统分时系统中,OS 在特权模式(系统模式)下运行,而与其关联的应用程序则在非特权模式(用户模式)下运行。 (有关系统特权的更多详细信息将在后文讨论。)但是,借助系统虚拟化,来宾 OS 可以在非特权模式下运行,而虚拟机监控程序则在特权模式下运行。 此类系统称为本机系统 VM。 在本机系统 VM 中,所有来宾 OS 中由用户程序发出的每条特权指令都必须由虚拟机监控程序捕获。 此外,虚拟机监控程序需要指定和实现管理硬件资源所需的每个功能。 另一方面,如果虚拟机监控程序在主机 OS 之上在非特权模式下运行,则来宾 OS 也将在非特权模式下运行。 此系统称为用户模式托管系统 VM。 在这种情况下,来自来宾 OS 的特权指令仍然需要由虚拟机监控程序捕获。 虚拟机监控程序也相应地需要由主机 OS 捕获。 显然,此要求通过为每个特权指令再添加一个陷阱增加了开销。 尽管如此,虚拟机监控程序仍可以利用主机 OS 上已经可用的功能来管理硬件资源。 最后,在称为双模式托管系统 VM 的系统中,虚拟机监控程序可以部分在特权模式下运行,部分在用户模式下运行。 这样一来,虚拟机监控程序就可以利用主机 OS 的资源管理功能,并为在用户模式托管系统 VM 中实施的每条特权指令再减少一个陷阱。
图 7:不同的系统 VM 分类