与全虚拟化相比,半虚拟化(前端/后端,即 FE/BE)具有性能优势。为了支持 FE/BE 虚拟化,平台层应提供以下底层支持:1.跨操作系统的消息发送/接收,例如在客户虚拟机(GVM)与宿主机操作系统之间。2.跨操作系统的内存共享。虚拟机监控程序(Hypervisor)应具备一种基础的底层机制;例如,在 QNX 虚拟机监控程序(QNX HYP)中,虚拟共享内存(virtual shmem)设备就支持跨操作系统通信。然而,不同的虚拟机监控程序(如 QNX、GreenHill 和 OpenSynergy)所采用的机制各不相同,因此,HAB(Hypervisor Abstraction Bridge,虚拟机监控程序抽象桥)应运而生,并确立了以下目标:1.支持跨操作系统的消息发送/接收。2.支持跨操作系统的内存共享。3.在所有虚拟机监控程序(HYPs)中提供统一的 API(应用程序接口)。4.在所有操作系统(包括 Linux 和 QNX)中提供统一的 API。5.如果某个操作系统存在用户态/内核态变体,则同时支持用户态和内核态。6.保证进程间和操作系统间的任何安全需求,例如不允许某个操作系统窃听另外两个操作系统之间的通信。请注意,HAB 的原始目标是提供 FE 与 BE 之间的连接/桥接/通道,FE 作为客户端,BE 作为服务端,这有助于理解 HAB 的内部设计。HAB 3-layers archHAB APIs 2 sets with different purposes: communication and memory sharing APIs Uhab and khab: APIs for both user and kernel space front/back ends Communication APIs (one to one) MMIDs are us