try ai
科普
编辑
分享
反馈
  • 虚拟机

虚拟机

SciencePedia玻尔百科
核心要点
  • CPU 虚拟化通过在较低特权模式下运行客户机操作系统,并使用“陷入并模拟”或硬件辅助来处理敏感指令来实现。
  • 内存虚拟化使用扩展页表 (EPT) 等硬件特性来执行安全的、两阶段的地址转换,从而在虚拟机之间提供强大的内存隔离。
  • 与容器相比,虚拟机提供了更优越的隔离性,因为每个虚拟机都包含自己的操作系统内核,呈现出更小且更易于防御的攻击面。
  • 在云计算中,虚拟化通过缓存分区等技术,实现了高效的服务器整合、动态资源管理和稳健的性能保障。
  • 通过硬件信任根 (TPM) 和远程证明可实现高级安全性,这些技术在虚拟机被信任之前以密码学方式验证其完整性。

引言

虚拟机 (VM) 是现代计算的基石,是从云数据中心到安全软件开发等一切事物的无形基础。虽然许多人每天都与虚拟机打交道,但很少有人理解那些让一台完整、独立的计算机能够完全作为软件存在的优雅原理和巧妙工程。这种理解的缺失掩盖了虚拟化的真正力量和多功能性——这项技术解决了效率、安全和规模方面的深刻挑战。本文将层层剥开抽象的面纱,揭示机器背后的“魔法”。

为建立这种理解,我们将首先在​​原理与机制​​一章中深入探讨核心技术。本章将揭示 Hypervisor 如何创造出专用硬件的宏伟幻象,探索 CPU、内存和其他系统资源的虚拟化。我们将审视从早期软件技术到提供性能和安全的现代硬件辅助方法的演进。随后,​​应用与跨学科联系​​一章将探讨这些机制所带来的变革性影响。我们将看到虚拟化如何成为解决云计算中复杂优化问题、保障多租户环境中性能以及在云中构建可验证的信任堡垒的强大工具。

原理与机制

为了领略虚拟机的奇妙之处,让我们开启一段旅程。想象一下,我们的任务是创造一个“瓶中宇宙”——一个完整、自给自足的计算环境,它完全相信自己的真实性,却仅作为宿主机上的一个软件存在。在这个宇宙中运行的程序,即客户机操作系统,相信自己对其硬件拥有主权控制:它自己的处理器、自己的内存、自己的磁盘。我们的挑战在于维持这一宏伟的幻象。虚拟化的原理和机制正是我们用来使这一幻象无缝、稳健且高效的巧妙规则和精妙“戏法”。

这一宏伟挑战可分解为三个基本问题:如何虚拟化作为计算核心的 ​​CPU​​;如何虚拟化作为思想草稿纸的​​内存​​;以及如何管理所有其他作为机器躯体和感官的​​系统资源​​。

主权的幻象:虚拟化 CPU

操作系统天生就是一个控制狂。它期望成为硬件的绝对君主,在处理器的最高特权模式下运行——在 x86 架构上通常称为 ​​Ring 0​​,在 ARM 架构上称为​​异常级别 1 (EL1)​​。在此模式下,它拥有配置硬件、管理内存和处理中断的神圣权利。虚拟化的核心悖论就在于此:当我们的 Hypervisor——真正的君主——已经占据了 Ring 0 的宝座时,我们如何能运行一个自认为是 Ring 0 君主的客户机操作系统?

经典的解决方案是一种被称为​​陷入并模拟 (trap-and-emulate)​​ 的精妙策略。我们将客户机操作系统运行在一个较低特权的模式下,比如 Ring 1。客户机对此毫无怨言,执行其正常的、非特权的指令。但当它试图执行一条​​特权指令​​时——这是为真正的君主保留的行为,比如暂停 CPU 或修改关键控制寄存器——硬件自身会提出抗议。它会拒绝该命令并触发一个“陷阱”(trap),即一个将控制权强制交给真正统治者——我们位于 Ring 0 的 Hypervisor——的异常。

此时被唤醒的 Hypervisor 会检查情况。它看清客户机试图做什么,并模拟出预期的结果。例如,如果客户机试图禁用中断,Hypervisor 并不会在物理 CPU 上禁用它们;相反,它可能只是在一个虚拟 CPU 状态结构中设置一个标志,表示“此客户机的中断已被禁用”。它完成这个障眼法后,便优雅地将控制权交还给客户机,而客户机仍然幸福地蒙在鼓里,不知道它的命令被拦截和模拟了。

这种纯软件方法虽然可行,但可能很慢。持续的陷入和模拟就像为每一道皇室法令都配备一名翻译。CPU 架构师们认识到这一点,并赠予我们一个远为优雅的解决方案:​​硬件辅助虚拟化​​。像 Intel 的 VT-x 和 AMD 的 AMD-V 等技术引入了新的 CPU 操作模式。例如,在 Intel CPU 上,处理器现在能够感知两种截然不同的上下文:“根模式”(root mode) 用于 Hypervisor,“非根模式”(non-root mode) 用于客户机。客户机操作系统现在可以在非根模式内部的 Ring 0 中运行,从而获得一种主权感。

然而,硬件被配置为知道哪些法令仍需真正君主的批准。当客户机执行一条敏感指令时,CPU 不会触发一个通用的、缓慢的故障。相反,它会执行一次高度优化的 ​​VM exit​​,高效地从非根模式转换到根模式,将控制权交给 Hypervisor。这是一个关键区别。硬件不仅仅是在捕捉不当行为,它是在主动参与这场虚拟化的游戏。

什么使一条指令变得“敏感”?Popek 和 Goldberg 的虚拟化需求为我们提供了一个绝佳的框架。一些指令是​​特权的​​,比如 LIDT (加载中断描述符表),只能由君主运行。用户级进程尝试执行它会引发故障。但有些指令是​​敏感的​​却非特权的。一个完美的例子是 CPUID 指令,它请求处理器标识自身。任何程序都可以运行它。但在一个虚拟世界里,我们不能让客户机发现它运行在一个与其预期不同的虚拟化 CPU 上!这会打破幻象。因此,硬件辅助允许 Hypervisor 同样捕获这些敏感指令,拦截问题并提供一个精心策划的、“符合角色”的答案。硬件模式和选择性陷入的结合,是驱动现代高性能 CPU 虚拟化的引擎。

镜子迷宫:虚拟化内存

第二个巨大挑战是内存。客户机操作系统相信它控制着从地址零开始向上的一片连续的物理 RAM。它构建页表,将其应用程序使用的虚拟地址转换为这些“客户机物理地址”(GPA)。但这只是幻象的另一层。从 Hypervisor 的角度来看,这些 GPA 只不过是另一组虚拟地址,必须被转换为机器实际 RAM 芯片上的真实“宿主机物理地址”(HPA)。

这就产生了一个两阶段的地址转换问题:

  1. ​​客户机阶段:​​ 客户机虚拟地址 (GVA) →\rightarrow→ 客户机物理地址 (GPA)
  2. ​​宿主机阶段:​​ 客户机物理地址 (GPA) →\rightarrow→ 宿主机物理地址 (HPA)

早期的 Hypervisor 通过一种名为​​影子页表 (shadow page tables)​​ 的复杂软件技术来管理这个问题。Hypervisor 会创建并管理一套“影子”页表,直接将 GVA 映射到 HPA,从而向 CPU 隐藏整个两步过程。这需要做大量工作来保持影子页表与客户机不断变化的页表同步。

硬件架构师再次提供了一个更优美的解决方案:​​硬件辅助内存虚拟化​​。Intel 的实现称为​​扩展页表 (Extended Page Tables, EPT)​​,而 AMD 的实现是嵌套页表 (Nested Page Tables, NPT)。借助这项技术,处理器的内存管理单元 (Memory Management Unit, MMU) 变得“双语”。它学会了如何自行完成两阶段的转换。当客户机进程试图访问内存时,MMU 首先遍历客户机的页表找到 GPA,然后毫不停歇地遍历 Hypervisor 的 EPT,将该 GPA 转换为最终的 HPA。

这种基于硬件的嵌套分页不仅是为了性能,它更是一种强大的安全机制。Hypervisor 对 EPT 拥有独占控制权。它可以铁板钉钉地定义某个特定虚拟机被允许访问宿主机内存的哪些区域。想象一个恶意的客户机操作系统试图突破其沙箱。它可能会操纵自己的页表,使其指向一个它希望对应于 Hypervisor 私有内存的客户机物理地址。

当客户机试图从此地址读取时,第一阶段的转换 (GVA →\rightarrow→ GPA) 会根据客户机的(恶意)规则成功。但当硬件进入第二阶段时,它会查阅 Hypervisor 的 EPT。该 GPA 在 EPT 中的条目其读、写和执行权限位都将被设置为零。硬件会立即检测到违规,停止访问,并触发一个 ​​EPT 违例 (EPT violation)​​——这是一个特殊的故障,直接将控制权转移给 Hypervisor。然后 Hypervisor 可以终止这个行为不端的虚拟机。这种双层、硬件强制的保护是强大内存隔离的基础,也正是这种隔离使虚拟机如此安全。

系统管弦乐:共享资源

一台计算机不仅仅是 CPU 和内存。为了完成我们的幻象,我们必须提供磁盘和网卡等 I/O 设备,并且必须公平地在物理 CPU 上调度我们的虚拟宇宙。

指挥棒:Hypervisor 调度器

当多个虚拟机运行时,Hypervisor 就像一位指挥家,决定在任何特定时刻哪个虚拟机的 vCPU 可以在物理 CPU 上运行。这引入了一个引人入胜的性能挑战,即​​双重调度问题 (double scheduling problem)​​。当 Hypervisor 为一个虚拟机分配一个时间片时,它的工作并未完成。该虚拟机内的客户机操作系统随后必须执行自己的调度,以选择运行其哪个进程。这两个调度决策——一个由 Hypervisor 做出,一个由客户机做出——都会产生少量的上下文切换开销。这导致了性能上的“双重税收”,是虚拟化的一个基本成本,工程师们正努力将其最小化。

调度也引发了关于公平性的深层次问题。一个客户机操作系统可能会使用巧妙的启发式方法,比如提升等待 I/O 的进程的优先级以改善交互性。Hypervisor 应该怎么做?如果它看到一个虚拟机经常空闲(因为其进程在等待 I/O),它是否应该通过将 CPU 时间分配给一个更耗费 CPU 的邻居来惩罚这个虚拟机?这样做会造成​​“双重惩罚”​​:客户机的进程已经在等待 I/O,而现在 Hypervisor 又因此惩罚整个虚拟机。

优雅的解决方案是让 Hypervisor 尊重抽象边界。它应作为一个简单、公平的分配器,根据管理员设定的权重分配 CPU 时间,只关心虚拟机是否可运行,而对其内部复杂的调度芭蕾舞一无所知。这种严格的关注点分离可以防止意外的交互,并确保在多租户世界中的公平性。

通过智能复制和直接访问实现共享

运行数十个虚拟机会消耗大量资源。虚拟化采用两个优美的原则来管理这一点:共享和直接访问。

想象一下,你正在运行 24 个完全相同的虚拟机。每个虚拟机都将其操作系统内核加载到内存中。在宿主机 RAM 中存储 24 个相同的内核副本将是极大的浪费。相反,Hypervisor 可以使用​​透明页共享 (transparent page sharing)​​(或称重复数据删除)。它扫描内存以查找相同的页面,如果找到,它会秘密地将所有虚拟机的客户机物理页面映射到单个宿主机物理页面。这可以节省大量的内存。但是,如果一个虚拟机试图修改一个共享页面怎么办?Hypervisor 最初将共享页面标记为只读。写操作会触发一个陷阱,此时 Hypervisor 会迅速为执行写入的虚拟机创建一个该页面的私有副本,并更新其映射。这个原则被称为​​写时复制 (Copy-on-Write, COW)​​,是一种经典的操作系统技术,在此被重新应用于 Hypervisor 层面,以同时实现高效共享和正确隔离。

对于高性能 I/O,在软件中模拟设备速度太慢。替代方案是​​直通 (passthrough)​​,即将一个物理设备直接分配给单个客户机。像 ​​SR-IOV (Single Root I/O Virtualization)​​ 这样的技术更进一步。一个单一、强大的物理设备,比如一个现代的 NVMe SSD,可以被配置为呈现为多个独立的、更轻量级的虚拟设备(虚拟功能,即 VF)。Hypervisor 随后可以为每个虚拟机独占分配一个 VF。这为虚拟机提供了一条直达设备的、接近原生性能的硬件路径,从而在没有 Hypervisor 协调开销的情况下,提供卓越的性能和强大的 I/O 隔离。

孤独堡垒:隔离原则

归根结底,虚拟机提供的最重要的服务是​​隔离​​。我们讨论过的机制——CPU 陷阱、嵌套页表、受 IOMMU 保护的设备直通——共同协作,为每个虚拟机构建了一座由硬件强制执行的坚固堡垒。

这座堡垒是虚拟机与像​​容器 (container)​​ 这样的操作系统级虚拟化技术之间的根本区别。容器就像一栋大楼里的公寓;它有自己的私密空间,但共享大楼的基础设施——管道、电力系统和地基。在计算机术语中,容器共享宿主机的操作系统​​内核 (kernel)​​。共享内核中的一个漏洞可能会影响所有容器。相比之下,虚拟机就像一个独立的、自给自足的房子。它自带内核。它与外界共享的唯一接口是狭窄的、专用的 Hypervisor 接口,这呈现了一个更小且更易于保护的​​攻击面 (attack surface)​​。这种架构上的差异是虚拟机成为在多租户云中运行不受信任代码的黄金标准的原因。Hypervisor 的类型也很重要:​​1 型(裸金属)Hypervisor​​ 本身就是操作系统,创建了最精简、最安全的基础。而 ​​2 型(托管)Hypervisor​​ 在一个通用操作系统之上作为应用程序运行,这虽然为技术栈增加了另一层,但提供了更大的灵活性。

但如果连地基都不可信呢?如果 Hypervisor 本身,或某个拥有特权内存访问权限的设备是恶意的呢?在这种终极威胁模型中,堡垒的围墙是不够的。最后一层隔离变成了密码学。两个希望安全通信的虚拟机不能信任底层基础设施来保护它们传输中的数据。相反,它们可以使用密码学协议,穿过不受信任的宿主机建立一条安全隧道。通过使用经过证明的​​密钥交换(如 ECDH)​​来建立共享密钥,并对每条消息使用​​认证加密 (AEAD)​​,它们可以确保机密性和完整性,从而在一个潜在的敌对海洋中创造出一个信任之岛。这表明,虚拟化系统中的安全是一项深刻的、多层次的工程,即使是虚拟宇宙的创造者也不能被完全信任。

应用与跨学科联系

在我们走过那些赋予虚拟机生命的巧妙机制——优雅的 CPU 陷阱技巧、精妙的内存管理骗术,以及坚固的隔离之墙——之后,我们可能会倾向于认为虚拟化是一项已然完成的魔术。但真正的冒险现在才开始。理解虚拟机如何工作是一回事;理解它让我们能做什么则完全是另一回事。正是在应用中,虚拟化从一个简洁的计算机科学概念转变为现代技术的基石,成为一个多功能工具,解决了运筹学、网络工程、计算机体系结构和信息安全等不同领域的问题。

虚拟化的力量源于我们已经遇到的三个优美思想:​​抽象​​(隐藏硬件的繁杂细节)、​​隔离​​(在租户之间建立围墙)和​​控制​​(以坚定的手腕管理资源)。现在让我们来探讨这些思想如何绽放出强大的应用,塑造云计算及更广阔的世界。

作为一台巨大高效机器的云

想象一下,你的任务是运营一个庞大的数据中心,一个装满数千台嗡嗡作响的服务器的仓库。你的目标是多方面的:你想可靠地服务客户,高效地使用昂贵的硬件,并避免电费账单让公司破产。这不是一个简单的计算机问题;这是运筹学和优化领域的一项巨大挑战,而虚拟机是掌握它的关键。

你该如何着手分析如此规模的系统?你可能会从一个简单的问题开始:在任何给定时间,平均会有多少台虚拟机在运行?这似乎令人望而生畏,但排队论中一个极为简单而深刻的结果——利特尔法则 (Little's Law)——给了我们一个直接的答案。它指出,一个稳定系统中客户的平均数量 LLL,是他们平均到达率 λ\lambdaλ 和他们在系统中平均花费时间 WWW 的乘积。即 L=λWL = \lambda WL=λW。对于云提供商来说,如果作业以一定的速率到达,并且每个作业需要一台虚拟机运行一定的平均时长,我们就可以立即估算出处理负载所需的并发活动虚拟机数量。这个源于研究电话交换和邮局的优雅法则,突然之间成为地球上最先进数据中心进行容量规划的关键工具。

知道你需要多少台虚拟机只是开始。下一个远为复杂的问题是:哪个物理服务器应该托管哪个虚拟机?这是虚拟机放置 (VM placement) 的巨大难题。每个虚拟机对 CPU、内存和其他资源有其自身的需求。每个服务器有其自身的容量。你的任务是尽可能高效地将虚拟机打包到服务器上。这个问题不仅困难;在最普遍的形式下,它是计算机科学中基础性的“难题”之一。实际上,我们可以将虚拟机放置的规则——每个虚拟机必须恰好位于一台服务器上,且任何服务器的容量都不能超限——正式地转换成一个巨大的布尔逻辑公式。问题“是否存在一个有效的放置方案?”就等同于问“这个公式是否可满足?”这就是著名的布尔可满足性问题 (Boolean Satisfiability Problem, SAT),第一个被证明是 NP-完备的问题。从深层次上讲,为我们的虚拟机放置问题找到一个满足的赋值,其难度不亚于解决任何一类著名的困难计算难题。

由于为大型数据中心找到唯一、完美、最优的解决方案在计算上是不可行的,我们转向了启发式算法的艺术——即寻找好的,尽管不总是完美的解决方案的巧妙策略。我们可以从某个初始放置方案开始,然后逐步尝试改进它。这就是像“爬山算法”这类算法背后的思想。我们定义一个“邻近”解的邻域——例如,所有通过将单个虚拟机移动到另一台主机,或通过交换两个虚拟机可以达到的放置方案。然后,我们反复在邻域中寻找能够改善我们总体目标的最佳移动——也许是最小化开机服务器数量或减少资源碎片化——并执行它。我们不断“爬山”,直到没有任何单步移动可以进一步改善我们的状况。

支撑所有这些优化的,是我们能选择的事物和给定事物之间的关键区别。在构建此类问题时,我们必须将我们的​​决策变量​​——比如要配置的某种类型虚拟机的数量,或将哪个任务分配给哪个虚拟机——与固定的​​参数​​区分开来,例如虚拟机的每小时成本或其硬件规格。这种严谨的思维方式是优化建模的核心。

最后,数据中心不是一个静态的晶体;它是一个生机勃勃的生态系统。工作负载会波动,昨天的最优放置方案今天可能就变得浪费。这就引出了动态整合的思想。Hypervisor 可以持续监控服务器利用率并做出决策。它是否应该将所有虚拟机从一个轻负载的服务器上迁移出来,并关闭该服务器以节省能源?这似乎是一个显而易见的胜利。但成本是什么?实时迁移 (Live migration) 并非免费;它消耗网络带宽,并可能暂时降低虚拟机性能。过于激进的迁移可能导致违反服务等级协议 (SLA) 和经济处罚。一个复杂的整合策略必须权衡节能收益与迁移成本,以及过度填充剩余服务器所带来的性能惩罚风险。这是工程权衡的一个优美缩影,一切都由 Hypervisor 精心编排。

保障性能与公平

现在让我们把视角从数据中心管理者转向运行虚拟机的用户。你不在乎提供商的电费账单;你关心的是你的应用程序运行得快速且可预测。但你的虚拟机正在与他人共享硬件。我们如何防止一个“吵闹邻居”——同一台物理机器上的另一个虚拟机——窃取你的性能?这正是​​隔离​​原则至关重要的地方。

考虑 CPU 的末级缓存 (last-level cache, LLC)。它是所有核心共享的一个大型、快速的内存库。如果你的虚拟机和邻居虚拟机在同一个芯片上运行,你们就在竞争这个缓存。如果邻居的应用程序具有不友好的内存访问模式,它会不断地将你的应用程序数据从缓存中驱逐出去,迫使你从更慢的主内存中获取数据。你的性能会骤降,而这并非你的过错。解决方案?硬件辅助的缓存分区。Hypervisor 可以配置处理器,将一定数量的缓存“路”(way)(片)专门分配给你的虚拟机。即使你的虚拟机只得到 8 个可用路中的 3 个,这 3 个路也是它的堡垒。如果你的应用程序的“工作集”能容纳在这 3 个路中,你就能保证 100% 的命中率,完全不受吵闹邻居恶作剧的影响。这是一个深刻的例子,说明虚拟化如何深入到芯片层面,以提供稳健的性能隔离。

公平性也延伸到其他共享资源,比如网络。想象两个虚拟机共享一个网络接口。如果调度器使用简单的“严格优先级”规则,给予虚拟机 A 绝对优先权,而虚拟机 A 总是繁忙,那么虚拟机 B 可能永远没有机会发送一个数据包。这被称为饥饿或无限期阻塞。一个更好的方法是“加权轮询”(Weighted Round Robin, WRR) 调度器。在每个周期中,它服务,比如说,来自虚拟机 A 的 wAw_AwA​ 个数据包和来自虚拟机 B 的 wBw_BwB​ 个数据包。通过调整权重,管理员可以保证每个虚拟机获得特定比例的网络容量,从而确保公平并防止饥饿。我们甚至可以用数学方法量化这种公平性,推导出一个指数,显示服务份额的平衡如何随着权重比率的调整而变化。

最后,为了整个系统的稳定,Hypervisor 必须像一个负责任的银行家一样行事。它必须确保承诺给虚拟机的总资源不会导致死锁状态,即每个虚拟机都在等待被另一个虚拟机持有的资源。操作系统中经典的银行家算法 (Banker's Algorithm) 提供了一个强大的类比和实用的解决方案。在接纳一个新虚拟机之前,Hypervisor 可以检查这样做是否会使系统处于“安全状态”——即存在至少一个可能的执行序列,允许每个虚拟机最终获得其所需的最大资源并完成。通过运行此安全检查,Hypervisor 确保它永远不会过度承诺其物理资源,以至于导致系统性僵局。此外,像实时迁移这样的功能依赖于底层网络具有足够的容量。一个基于第一性原理的简单计算——考虑虚拟机内存大小、压缩、协议开销和期望的事件频率——让工程师能够确定支持这些高级虚拟化功能而不会产生瓶颈所需的网络带宽。

信任的堡垒

或许虚拟化最精妙、最深刻的应用在于安全。当你在云中运行虚拟机时,你正将你的代码和数据放在别人拥有的机器上,与完全陌生人的代码并存。你如何才能信任这个环境?答案是自下而上地建立信任,从一个硬件“信任根”开始。

现代服务器通常包含一个名为可信平台模块 (Trusted Platform Module, TPM) 的特殊芯片,Hypervisor 可以为每个虚拟机提供一个虚拟 TPM (vTPM)。TPM 提供了一种安全、防篡改的方式来度量启动过程。这被称为​​可度量启动 (measured boot)​​。当虚拟机启动时,每个组件——固件、引导加载程序、内核、初始配置——都通过计算其加密哈希值来进行度量。然后,这个哈希值被扩展到一个 TPM 中称为平台配置寄存器 (Platform Configuration Register, PCR) 的特殊寄存器中。关键在于,这个“扩展”操作是顺序且不可逆的:PCRnew=HASH(PCRold∣∣measurement)PCR_{new} = HASH(PCR_{old} || measurement)PCRnew​=HASH(PCRold​∣∣measurement)。最终的 PCR 值是已加载软件确切序列的唯一指纹。

在你的虚拟机被允许加入生产网络之前,远程编排器可以挑战它执行​​远程证明 (remote attestation)​​。虚拟机的 vTPM 会生成一个“报价”(quote)——一个经过加密签名的声明,包含当前的 PCR 值和一个 nonce(一个用于证明新鲜度并防止重放攻击的随机数)。编排器接收到这个报价并执行严格的检查:

  1. 它验证签名,确保其来自一个合法的 TPM。
  2. 它检查 nonce 以确保报价是新鲜的。
  3. 它将报价中的 PCR 值与一个预先计算好的、已知的良好 PCR 值列表进行比较。

如果经证明的 PCR 值与一个已知的、安全的虚拟机镜像的值完全匹配,该虚拟机就会被信任并获准加入。如果它有任何不同——即使是单个配置文件中的单个字节——最终的 PCR 值也会完全不同,匹配将失败,该虚拟机将被拒绝。这里没有“基本正确”的余地。度量的有序序列必须是完美的。攻击者不能简单地换入一个恶意内核,同时保持其他组件合法,因为这会改变启动顺序,并产生一个编排器会立即识别为不受信任的 PCR 值。这个过程使我们能够从硬件到应用程序建立一个信任链,即使在多租户云中也能创建一个可验证和安全的计算环境。

从排队论的抽象优雅,到缓存分区的具体细节,再到远程证明的密码学保证,虚拟化的应用证明了一个统一思想的力量。通过提供一个可控的抽象和隔离层,虚拟机不仅让我们能够运行多个操作系统,更赋予我们工具,以几十年前无法想象的规模、效率、性能和信任度来设计计算系统。