【Jailhouse论文】Look Mum, no VM Exits! (Almost)
主要为翻译 Jailhouse 的论文,为了方便理解个人补充了一些名词的理解
Abstract
多核 CPU 已成为许多现代嵌入式系统的标准组件。它们的虚拟化扩展使得可以隔离服务,并且在实现混合关键性或其他分割系统方面变得越来越流行。我们介绍了 Jailhouse,一个基于Linux的、与操作系统无关的分区型虚拟化监控程序,它使用了新颖的架构方法,将 Linux(一个功能强大的通用系统)与严格隔离的特殊用途组件结合起来。我们的设计目标是以简单性取胜于功能,并建立一个最小的代码库,最大限度地减少监控程序的活动。
硬件直接分配给客户机,并结合延迟初始化方案,将任何复杂的硬件处理和引导问题从监控程序转移到通用操作系统。监控程序建立了直接访问物理资源的隔离域,无需模拟或半虚拟化。这样做可以在不影响系统性能的情况下,保留 Linux 在非关键部分的丰富功能,同时在隔离的、安全的域中执行经济实惠的安全和实时关键工作负载。
理解混合关键性?
可以阅读:https://openeuler.gitee.io/yocto-meta-openeuler/master/features/mica/mica.html
不同系统负责所各自所擅长的功能,如 Windows的 UI、Linux 的网络通信与管理、实时操作系统的高实时与高可靠等,而且还要易于开发、部署、扩展,实现的形式可以是容器、虚拟化等
1、Introduction
尽管多核 CPU 随处可见,但安全关键和非关键产品的制造商 仍倾向于将不同关键级别的组件分割,以分离硬件单元。在这种传统的混合关键性环境中,单一的逻辑控制任务与专用的物理控制单元密切绑定。这种架构方法的典型代表范围广泛,从汽车领域(一个单一汽车包含几十到数百个不同的控制单元并不罕见),到工业可编程逻辑控制器(PLCs),在这些控制器中,关键的逻辑控制任务与非关键的人机界面(HMIs)在不同的物理计算平台上执行。将这些系统整合到单个硬件单元是一种架构趋势,它不仅改善了大量且不断增长的软件的可维护性,还降低了整体硬件成本。
可以利用 CPU 虚拟化扩展来创建执行环境,轻松地将现有的传统有效载荷应用程序迁移到紧密隔离的执行域,这些执行域不会以不可接受的方式相互干扰。我们的方法依靠这些广泛使用的技术对硬件进行静态分区,同时减少架构依赖性。
个人理解:通常情况下,硬件资源(比如 CPU 核心)是被单个操作系统所占用的,但通过虚拟化技术,可以将这些资源动态地划分给不同的执行环境,使得多个环境可以共享硬件资源,但彼此之间互相隔离。
我们架构的核心是基于 Linux 的管理程序 Jailhouse,它最初由作者之一(JK)开发,后来被改进为开源软件。它通过在系统和 I/O 总线之间插入"虚拟屏障",将对称多处理(SMP)系统转换为非对称多处理(AMP)系统。从硬件角度看,系统总线仍然是共享的,而软件则被囚禁(jailed)在 cells 中,访客软件(即所谓的囚徒inmates)只能从 cell 中接触到物理硬件的一个子集。
名词理解:
对称多处理(SMP):指的是一种计算机系统架构,其中多个处理器核心【共享相同的系统总线、内存和其他资源】。在SMP系统中,每个处理器核心都可以执行相同的指令集,并且通常具有对等的访问权限,即它们可以访问相同的资源,而不受到其他核心的限制。
非对称多处理(AMP):与 SMP 相对,非对称多处理系统中的处理器核心可能具有不同的访问权限或使用方式。这意味着一些核心可能被限制只能访问特定的内存区域或I/O设备,而其他核心则可以访问不同的资源。
异构计算:指的是一种计算机系统中使用不同种类的处理器或计算单元的方式。这些处理器或计算单元可能具有不同的体系结构、功耗、性能或特性。
Jailhouse 通过内核模块从完全启动的 Linux 系统中启用,见图 1。它控制所有硬件资源,根据系统配置将其重新分配给 Linux,并将 Linux 提升到虚拟机(VM)状态。Jailhouse 的管理程序核心充当虚拟机监控器(VMM)。这种方案并不符合管理程序的传统分类——它可以被视为 Type-1 和 Type-2 管理程序的混合体:它像裸机管理程序一样在原始硬件上运行,没有底层系统层,但如果没有 Linux 作为系统助手提供初始化硬件,仍无法运行。Linux 用作引导加载器,但不用于运行。其他实时分区方法(如 PikeOS)旨在管理硬件资源,可能会禁止客户系统直接访问,而 Jailhouse 不同,它只支持直接访问硬件。Jailhouse 不使用复杂耗时的(半)虚拟化方案来模拟设备驱动程序和共享物理硬件资源,而是采用类似外核的方法,即只提供隔离(通过利用虚拟化扩展),但有意不提供调度程序或虚拟 CPU。根据硬件支持情况,只有(少数)还不能以这种方式分区的资源才会在软件中进行虚拟化。
个人理解:Jailhouse 的目标是 No VM Exits,争取让虚拟机能够直接控制分配给它的硬件资源,而不通过 Jailhouse 来访问硬件,尽量提高性能
出于成本效益的考虑,许多工业应用系统都不能放弃 Linux 的功能和特性,但它们又面临着越来越多的要求,即又要同时满足 Linux 难以达到的安全或其他认证要求。我们的架构方法满足了这些需求。不过,我们认为它也是一个理想的框架,可以方便地将最先进的研究或实验系统与基于 Linux 的工业级解决方案整合在一起,从而以新颖的方式解决特定的问题。
在本文中,我们将介绍
- Jailhouse 的架构,它是一个运行在多种架构上的全功能、非调度、实时、静态分区和开源管理程序。
- 作为 Jailhouse guest 运行的一个非同小可的真实世界混合关键性应用程序的实现。
- 延迟启动管理程序的优势。
- Nvidia Jetson TK1 上中断系统的典型微基准测试。
2、Related Work
嵌入式虚拟化与普通的企业虚拟化、桌面虚拟化或大型机虚拟化有着本质区别,后者才是该技术的根源。许多领域都把整合服务作为主要动力。在台式机和企业领域,虚拟管理程序通常针对高吞吐量和最佳性能进行优化,而针对实时性受限的嵌入式系统的虚拟化解决方案则特别注重低延迟、确定性计算周期和保持实时性。
尽管如此,许多嵌入式管理程序仍采用了经典虚拟化的既定做法:硬件超量承载、半虚拟化或设备模拟以及客户调度。
硬件超量承载:传统的虚拟化方法中,物理服务器通常会被虚拟机"超量化",即在物理服务器上运行更多的虚拟机,以提高资源利用率。这种方法可以带来更高的资源利用率,但也可能导致性能下降或资源竞争。
半虚拟化:在某些情况下,虚拟化技术需要模拟物理设备以让虚拟机能够与硬件交互。半虚拟化是一种虚拟化方法,其中虚拟机的操作系统需要修改以与虚拟化层进行通信,从而提高性能。设备模拟是一种通过软件模拟物理设备的方法,以便虚拟机能够访问它们。
客户调度:在虚拟化环境中,虚拟机的调度是一项重要任务。客户调度是指在虚拟化环境中对虚拟机进行调度,以便它们能够在物理服务器上按需运行。
Crespo 等人提出了 XtratuM 嵌入式管理程序。他们的方法侧重于航空指南和规范给出的设计约束。XtratuM 具有内存管理、时钟和定时器管理、中断管理、功能丰富的超级调用接口和自己的调度程序,是一个全面的管理程序。
PikeOS 实时分离内核方法允许执行不同的客户环境或本地任务。在运行客户操作系统时,PikeOS 使用半虚拟化和硬件辅助虚拟化,但也允许直接 I/O 访问。对于有效载荷应用,PikeOS 结合了时间和优先级驱动调度,并对非关键任务采用尽力调度。
为了实现时间和空间隔离,管理程序并不总是需要所有虚拟化扩展的可用性。**Pinto 等人展示了一种有趣的方法,即利用 ARM TrustZone 技术在单个 CPU 上与 Linux 并行运行实时操作系统。他们的方法通过仅对实时关键设备使用快速中断(FIQ)来保持实时功能。**与普通 IRQ 不同的是,这些中断直接到达安全世界,实时操作系统和管理程序就在这里执行。普通中断则到达与安全世界隔离的非安全世界。这种方法只能将非安全世界与安全世界隔离,反之亦然。此外,TrustZone 方法只允许创建两个域。
Quest-V 是 Quest 操作系统的升级版,在多个方面与 Jailhouse 相似。它旨在以最少的监控活动实现静态硬件分区。与 Quest-V 相反,Jailhouse 只是一个 VMM,没有实现任何设备驱动程序,这大大减少了其代码库。Quest-V 依靠半虚拟化方案将 Linux 内核作为访客启动。
与所有这些系统不同的是,Jailhouse 从 Linux 开始(并利用其功能初始化大部分硬件),然后使用延迟(或晚期)管理程序激活,在已运行的 Linux 下对硬件进行分区。
3、Static Hardware Partitioning
A、 Jailhouse Philosophy
如图 1 所示,激活 Jailhouse VMM 需借助包含管理程序(HV)的 Linux 内核模块。每个 CPU 执行 HV 启动代码后,Linux 将继续作为 Jailhouse 的虚拟机和客户机(即所谓的 root cell)运行。
现有的硬件种类繁多,对于资源有限的研究小组来说,很难甚至不可能在系统中支持这些硬件。相反,Linux 在硬件支持方面是一个极其强大的操作系统。Jailhouse 利用这一优势,劫持了 Linux。VMM 的非典型延迟激活程序具有相当大的实际优势,即大部分硬件初始化完全卸载给 Linux,而 Jailhouse 可以完全专注于管理虚拟化扩展。[与外部内核(exo-kernel)方法类似,Jailhouse 也是一个外部管理程序(exo-hypervisor),不同之处在于其骨架是由整体模型建模的,而不是相反*(注:这句话一直没想到一个合适的翻译)*]。硬件设备的直接分配允许 Linux 像以前一样继续执行。与其他分区方法不同的是,Jailhouse 不需要任何特定的设备驱动程序,只需要极简的可选调试帮助程序。
换句话说,Jailhouse 的设计是基于整体模型的概念和要求,而不是先有一个框架或结构,然后再根据它来建立整体模型。可以理解为,在设计 Jailhouse 时,首先考虑了整体模型所需的功能、约束和要求,然后才建立相应的框架或结构来满足这些需求。
**Jailhouse 假定物理硬件资源无需在客户机之间共享。**要创建额外的域(称为 non-root cells),Jailhouse 会从 Linux 中移除硬件资源(如 CPU(s)、内存、PCI 或者 MMIO 设备),并将其重新分配给新域。因此,Linux 会释放即使之前使用过的硬件。这包括物理 CPUs:一个分区的配置至少包括一个 CPU 和一定量的被 root cell 预装的内存,其中包括其他的操作系统或者裸机应用程序。
Linux 会下线选定的 CPUs,并调用管理程序(hypervisor),通过提供描述分配资源的单元配置来创建新 cell。其他资源,如 PCI 设备、内存映射设备或 I/O 端口,也可以专门重新分配给新的客户机。管理程序会阻止从任何其他域对这些资源的后续访问,从而防止无意中的修改。Non-root cells 可以被动态创建、销毁(即资源重新分配给 root cell)或重新启动。
虚拟化扩展(涉及四种主要架构:具有虚拟化扩展(VE)的 ARMv7、ARMv8、支持 VT-x 和 VT-d 的 Intel 64 位 x86,以及支持 SVM 的 amd64)保证空间隔离:任何访问违规,例如跨分区的非法访问,都会引发 hypervisor 的陷阱,最终停止执行。由客户执行的某些指令会引发陷阱,并必须由 hypervisor 处理。
由于 Jailhouse 只负责重新映射和重新分配资源,因此理想的设计构想是,除了管理之外,它不需要在设置和启动所有客户机后处于活动状态,而只需要在出现违规访问时进行拦截: “Look Mum, no VM Exits!”。不过,硬件(目前)还不完全适合这种方法,因此在当前的硬件上,以下情况仍需要 VMM 进行干预:
- 中断再注入(视架构而定,中断可能不会直接到达客户机)
- 拦截不可虚拟的硬件资源(如 ARM 上通用中断控制器 (GIC) 的部分资源)
- 访问平台特定资源(例如,访问 ARM 上的控制协处理器 CP15 或电源状态控制接口 (PSCI))
- 模拟某些指令(如 x86 上的 cpuid)
以下陷阱是不可避免的,也不违背我们的理念,因为它们只会在越狱 (jailbreak) 或 cell 管理的情况下出现:
- 违规访问(内存、I/O 端口)
- 单元管理(如创建、启动、停止或销毁单元)
这些拦截会带来开销和延迟——当然,虚拟化是有代价的。在第四节中,我们将对一个基本的微基准进行评估,即中断的额外延迟。
尽管对不同客户的资源进行了严格隔离,但 Jailhouse 仍允许单元共享物理页。除了实现 cell 间通信外,该机制还允许共享内存映射的 I/O 页面(如果需要的话),这允许从多个域内访问硬件资源。不过,这种并发访问并非由 Jailhouse 仲裁,而是需要由客户进行适当处理。
图 2 显示了三个单元的可能的分区系统布局:Linux root cell(绿色)、额外的 Linux non-root cell(蓝色)和极简实时操作系统(红色)。cell 之间的通信通过共享内存区域和信号接口实现。这种极简设计无需在管理程序中添加设备驱动程序逻辑。根据硬件支持情况,它是基于虚拟 PCI 设备,通过消息信号中断(MSI-X)或传统中断实现的。客户可使用该设备在其上实现虚拟以太网设备。在不支持 PCI 的系统上,Jailhouse 会模拟一个通用、简单的 PCI 主控制器。在这种情况下,我们选择了模拟,因为 PCI 提供了一个配置空间: PCI 设备可识别自身及功能。如果支持的话,这样就能在客户机中实现自动配置,而且虚拟 PCI 主机控制器只需 6 行代码,不会增加整体代码量。
个人对这段后半段还不是很理解。
B、Support
这种分区方法允许安全认证操作系统或裸机应用程序与 Linux 并行运行在一个整合的多核系统上。值得一提的是,尽管 Jailhouse 支持四种不同的 CPU 架构(这超出了许多实验或研究系统所能提供的范围),但其简约的方法使得核心部分的代码仅有数千行。这不仅简化了认证流程,还让开发人员能够集中精力解决重要问题,而无需花费时间提供在现实环境中使用系统所需的大量设备驱动程序。核心部分的简洁性为管理程序的形式化验证奠定了良好基础,类似于相关系统软件的形式化验证。
Jailhouse 自带 inmate 库,可运行极简的演示应用程序。除 Linux 外,还有多个操作系统可作为 Jailhouse 客户机使用(x86 上的 L4 Fiasco.OC、ARM 上的 FreeRTOS、ARM64 上的 Erika Enterprise RTOS v3)。我们已成功地将 RTEMS 实时操作系统移植到 ARM 架构上,但所做的工作非常有限——大部分修改都是为了支持特定平台的板卡。移植系统的简易性表明,通过将其与工业级基础结合,可以将特性不完整的研究方法应用于真实的工业用例。
C、Practicability
为了展示我们的方法尤其适用于实际应用,我们实现了一个(混合关键性)多旋翼控制系统。这种平台的要求与许多常见的工业设备相当:飞行堆栈是系统的安全和实时关键部分,具有高可靠性要求,负责平衡和导航飞行器。必须以高数据速率对传感器值进行采样、处理,并最终用于控制旋翼。为了安全可靠地执行任务,控制循环必须具有确定性响应。系统崩溃可能导致严重后果的真实崩溃。
飞行堆栈:是自主无人机制导、导航和控制算法的集合,为关键任务。
飞行堆栈在一个 Jailhouse cell 中运行,而非关键任务,如与地面站的 WiFi 通信或摄像头跟踪,则可借助可用的 Linux 软件生态系统在非关键部分轻松实现。关键硬件组件,如 SPI、I2C 或 GPIO 设备,则分配给关键 cell。我们的硬件平台是配备四核 Cortex-A15 ARMv7 CPU 的 Nvidia Jetson TK1,连接到一个提供加速计、GPS、罗盘和陀螺仪的传感器板。两个核心分配给非关键部分,两个核心分配给关键部分。
关键域执行第二个简化版 Linux 操作系统,配备了 Preempt_RT 实时内核扩展。Ardupilot 提供飞行控制,除了板支持外不需要修改。这强调了现有应用可以在 Jailhouse 设置中轻松部署,并且适合于基于现有组件实现大多数实时安全关键系统。然而,我们需要解决各种问题,这些问题在纯概念层面或针对特定硬件定制的系统中不会出现,但却危及了我们和类似方法中所做的假设。
4、Evaluation
如前所述,Jailhouse 的目标是最大限度地减少监控程序的活动。尽管在理论上这是可能的,但监控程序的存在本身会引入额外的延迟,而在没有虚拟机监视程序的情况下是不存在的。例如,影子页表可能会引入额外的内存访问延迟。
为了评估和确定监视程序的(实时)性能,必须考虑几种环境条件。使用单一标量来量化监视程序的开销是困难的,甚至是不可能的。这就导致需要一系列微基准测试。
对于所有基准测试,单次测量不能够得出关于系统行为的任何结论。微基准测试应在特定的环境条件下重复进行,例如实际存在监视程序,特定测量频率以及其他客户机利用率。
由于论文篇幅有限,我们将以中断延迟的测量为例详细介绍,并描述其他可观测的测量。
重要的是要指出,这些基准测试并不是测量 hypervisor 的开销,而是在特定硬件平台上运行时 hypervisor 的开销。尽管如此,这些测量允许推导出 hypervisor 性能的趋势。
a) 超级调用:用于 hypervisor 的一个典型基准是超级调用的成本。在 Jailhouse 的情况下,不需要考虑超级调用,因为它们仅用于 cell 管理的目的,并且从不出现在频繁路径中。
b) 共享系统总线:不同的客户机异步访问内存,并且内存或I/O访问可能会被硬件串行化。虽然在支持的架构上不会出现饥饿现象,但是内存或I/O总线的重度利用可能会导致客户机明显减速。虽然这个问题对于对称多处理应用程序是众所周知的,但在异步执行设计用于单核平台的多个负载时,必须评估其影响。
c) 架构相关陷阱:由于架构限制,Jailhouse 需要模拟对于硬件平台至关重要且无法在硬件中虚拟化的设备(例如,在 ARM 架构中作为通用中断控制器的一部分的中断分配器)。根据这些设备的利用率,必须分析 hypervisor 的影响。
d) 中断延迟:Jailhouse 支持 ARM 的两个版本的通用中断控制器,GICv2 和 GICv3。这两个实现共享相同的架构限制:中断不会直接到达客户机。它们到达 hypervisor,然后被重新注入为虚拟中断到客户机。这将导致 hypervisor 中的开销,因为它必须将中断重定向到适当的客户机,然后进行特权级别切换。
我们的自动化测量设置包括一台 Nvidia Jetson TK1(四核 Cortex-A15 @2.32GHz)作为目标平台,以及一台 Arduino Uno 用于执行实际测量。
**为了测量这种延迟,我们将裸机延迟(即,在没有虚拟化监控程序的情况下的最小延迟)与 hypervisor 存在时的延迟进行比较。**Arduino 定期在目标板上切换一个 GPIO 引脚,从而引发一个中断。Non-root cell 的唯一任务是尽快通过切换另一个 GPIO 来响应中断。因此,我们实现了一个使用 Jailhouse 自己的 inmate library 的最小化客户机。为了尽可能地减小响应的代码的大小,使其尽可能快速,切换 GPIO 的指令直接在中断向量表中用汇编语言编写。没有 hypervisor 的测量代表了所选硬件平台可以实现的最小延迟。有无 hypervisor 存在的延迟差异测量了 hypervisor 和其他客户机异步访问系统总线时引入的延迟。Uno 的捕获比较单元确保以 62.5ns 的分辨率进行精确测量。为了验证测量结果,我们使用示波器手动测量了样本测量的延迟。
我们在几种条件下重复进行测量(例如,对其他客户机施加负载以测量对共享系统总线的影响),并呈现算术平均值以及标准偏差和最大延迟。每次测量持续四个小时,并且使用 10Hz 和 50Hz 的中断频率重复进行,以确定测量频率的作用。表I中的 stress 参数描述了是否使用 stress-ng 基准测试将其他客户机置于 CPU、I/O 或内存负载下。
结果可以在表I中找到。前两行显示了在没有 hypervisor 存在的情况下进行测量的最小中断延迟。与其他测量的差异表示了 hypervisor 引入的额外开销。
由 hypervisor 引入的延迟并不明显取决于中断频率,而是取决于相邻客户机的利用率。这种效应是由共享系统总线引起的:hypervisor 希望访问所需的内存来分发中断,而其他客户机异步访问相同的总线。
平均中断延迟约为 810 纳秒,标准偏差较小。尽管如此,极端值导致延迟接近 5 微秒。与典型工业通信总线系统的周期时间相比,最大延迟对许多应用程序来说是可以接受的。
5、Discussion
Jailhouse 的极简设计方法导致了可管理的源代码行数(SLOC)。这对于从学术角度进行形式化验证以及从工业角度进行系统认证都是至关重要的因素。
Jailhouse 总共包含了近 30,000 行源代码(SLOC),涵盖了四种不同的架构。这包括虚拟化监控程序核心、示例代码、内核驱动程序以及用户空间工具和实用程序。代码的很大一部分是与架构无关的。所有架构共享的关键 hypervisor 核心代码总共不到 3,400 行SLOC。架构相关的代码约为 x86 平台 7,400 行 SLOC,实现了 Intel 和 AMD 两种架构;ARM 平台约为 5,400 行 SLOC,包括 ARMv7 和 ARMv8。举例来说,ARMv7 平台的整个虚拟化监控程序核心总计约为 7,400 行 SLOC。
许多研究系统都是从零开始开发的,并花费了大量精力重新实现现有的设备驱动程序。但是,仍然存在设备支持不足的问题,这是它们实用性的主要障碍。Quest-V 的源代码行数中超过一半(约 70,000 行 SLOC,总共 140,000 行 SLOC)用于实现设备驱动程序。XtratuM 几乎是 Quest-V 的一半大小,只有大约 27,000 行 SLOC,也只实现了用于调试输出的基本驱动程序。然而,目前公开可用的 Quest-V 和 XtratuM 版本仅支持 x86 架构。
Jailhouse 故意不遵循传统的虚拟化方法,但其设计通常不排除使用这些技术。这为利用 Jailhouse 作为一个实验系统平台打开了可能性,使得可以将重点放在解决实际问题上,而不是从零开始重新实现基础知识。Jailhouse 是研究硬件和软件在 AMP 工作负载下行为的理想平台。此外,它为在原始硬件上执行数字信号处理(DSP)类工作负载提供了方便和舒适的环境。
**现代多核系统已经提供了足够的物理 CPUs,使得对于许多实际嵌入式用例来说,在 hypervisor 中进行调度是不必要的。**事实上,许多对实时嵌入式 hypervisor 的关键要求,如实时调度策略、高效的上下文切换或确定性的 hypervisor 调用,在分区设置中甚至都不需要解决。这些要求实际上反映了操作系统的众所周知的问题,不应该在具有实时要求的嵌入式系统的 hypervisor 空间中重复。由于 Jailhouse 不虚拟化 CPUs、不超配硬件或调度分区,因此不存在昂贵的分区上下文切换或调度问题,就像它们出现在其他实时 hypervisor 中一样。超级调用仅用于管理目的,而不用于调节对共享硬件的访问。
根据中断系统和架构的不同,中断可能会到达 hypervisor。在这种平台上,将中断重新注入到客户机是 hypervisor 的一个常见任务,会引入意外的额外中断延迟。对于支持中断重映射的 64 位 x86 架构,这个问题已经得到解决,并且将在未来实现 GICv4 规范的 ARM 架构中得到解决,这有利于我们的最终目标,即不产生虚拟机退出。
然而,由硬件设计引起的不可避免的陷阱仍然存在。在当前的 ARM 架构中,中断分配器必须进行虚拟化。 Varanasi 和 Heiser 假设这不会导致性能问题。然而,在我们实现演示平台的过程中,相反,我们观察到,带有 Preempt_RT 实时补丁的 Linux 内核大量使用中断分配器,这导致了 hypervisor 的高活动量。这些问题应该通过适当的硬件设计来解决,以便能够执行未经修改的客户机。
6、Conclusion and Future Work
静态分区虚拟化监控程序技术是嵌入式实时虚拟化的一种有前途的方法,因为它们的最终目标是最大限度地减少与客户机的交互,将典型的半虚拟化方法引入的所有问题推迟到客户机的操作系统中,这些问题在之前就已经存在了。无驱动程序的方法试图填补学术研究系统和工业实用性之间的差距。
与半虚拟化技术相比,直接将硬件分配给客户机,使得可以运行未经修改的传统负载应用程序,而没有活跃的 hypervisor 的额外开销。极简化的 hypervisor 核心简化了认证工作。通过将标准操作系统作为客户机执行,我们还将用于移植现有传统负载应用程序所需的工作量降到了最低。通过实现一个复杂的演示平台,我们成功展示了硬件分区的实用性。
尽管当前硬件提供的标准虚拟化扩展似乎足以实现我们和许多其他方法的简单实现,但真实硬件存在一些限制,这些限制可能会完全削弱分区和基于虚拟化的方法的优势和保障。我们未来的工作将解决出现的问题,并注重评估 hypervisor 的性能。