分享

汽车hypervisor — 定义和类型

 小毛HYL 2020-09-07
最近在看一些hypervisor的一些资料,打算分几次整理一下。

IT领域以及越来越多的嵌入式领域中的软件分离通常是通过使用虚拟化来解决的,这意味着要通过软件和硬件分区模拟硬件的特性来创建硬件的“虚拟”版本,在这些分区中,特定软件是隔离的,因此只能访问分区内提供的资源。Hypervisor(虚拟机管理系统)是一种支持软件的方法,可为操作系统(OS)、中间件和运行的应用程序提供虚拟化环境。

不过,在更详细地讨论hypervisor之前,重要的是定义一些核心计算概念,帮助解释hypervisor可做什么和不可做什么,以及为什么不同的hypervisor“类型(type)”的定义会引起混淆。这是因为hypervisor通常包括常规OS的核心功能,或者它们本身是OS扩展。例如,KVM(Kernel-based Virtual Machine)是Linux内核中包含的模块,可使其充当hypervisor。因此,在评估hypervisor时,不仅要了解其类型,还应了解hypervisor的硬件(例如处理器、内存等)与软件之间的交互类型,这一点非常重要。

Kernel(内核)是OS的基本部分,它控制最基本的功能,例如调度任务、将任务发送给驱动程序,以及访问硬件资源(当Kernel和OS的其余部分直接在处理器上运行时)。通常,OS在具有特权且对硬件资源无限制访问的Kernel空间中或在运行所有其他OS功能的用户空间中执行特定功能。

Microkernel(微内核)是一种OS的kernel,已被划分为不同的“模块”,其中仅某些核心kernel功能具有完全特权(同样,它们具有对硬件资源的完整、不受限制的访问权限),并在kernel空间中运行。在典型的microkernel架构中具有特权访问权限的核心kernel功能包括处理器(例如CPU)调度、内存管理和进程间通信。在microkernel中,通常将在kernel空间中运行的功能在用户空间中执行,例如网联、管理文件系统,以及运行协议栈和设备驱动程序。这样做是为了确保kernel的不同部分仅具有对所需资源的访问级别。

Separation Kernel(分离内核)是另一种架构。从一般的角度来看,separation kernel旨在创建分区、管理分配给这些分区的资源,以及控制信息如何从这些资源流向每个分区中正在运行的内容。separation kernel通常不包含许多microkernel中常见的功能,例如调度和内存管理。在hypervisor的环境中,separation kernel hypervisor设计为使用现有的硬件虚拟化支持来创建虚拟机(virtual machine/VM)。除非另外特别指定,否则每个VM均具有对处理器资源的固定访问权。separation kernel的最初概念来自John Rushby在1981年发表的论文<Design and Verification of Secure Systems>。Rushby写道:

“……Separation kernel的任务是创建一个与物理分布式系统所提供的环境没有区别的环境:它必须看起来像每个状态都是一台单独的隔离的机器,并且信息只能从一台机器流向另一个已知的外部通信线路。

基于separation kernel的hypervisor没有设备驱动程序,也不管理内存。它们仅对特定VM的硬件资源进行分区。所有其他功能均由给定的guest OS(以及在VM上运行的相关软件)处理。

Hypervisor(虚拟机管理系统)是一种软件,旨在用于 a.将系统资源(通过硬件或host OS直接提供)分配给guest OS,以及 b.为系统提供一定程度的抽象(例如虚拟化或半虚拟化)使不同的guest OS,甚至本机应用程序能够并行运行。hypervisor分为两种类型,每种类型都会影响工程师构建系统的方式。

Type1 hypervisor直接在处理器上运行,因此通常被称为“bare-metal(裸机)”hypervisor。guest OS将在hypervisor上运行。type1 hypervisor是在给定的硬件和软件堆栈中运行的软件的“底层”。这种类型的hypervisor控制运行在其上的guest OS可以访问哪些资源。

Type2 hypervisor不同于type1,是在操作系统上运行。在这种情况下,基本软件层是操作系统,下一层是type2 hypervisor,然后多个虚拟机可以在hypervisor上运行。当guest OS在type2 hypervisor上运行时,guest OS只能访问由正在运行hypervisor的host OS提供给它的系统资源。

下图展示了type1和type2 hypervisor之间的差异。

左为type1,右是type2

对于具有hypervisor功能的RTOS是真正的type1、bare-metal hypervisor,还是实际上是type2(因为hypervisor在功能上是RTOS功能的扩展),业内存在分歧。

hypervisor通常具有所谓的VMM(Virtual Machine Monitor),该VM通过划分硬件资源和管理内存来创建给定guest OS将在其上运行的VM(硬件资源的虚拟版本)。尽管硬件分区是实现相似目标的另一种方法,即将设备的资源(内存、处理能力等)分配给不同的guest OS,但与使用hypervisor相比,这种方法通常较不灵活。对于硬件分区,通常在一个CPU内核上运行一个OS。该软件(即OS)在该处理器上运行,除了通过分区专用于系统资源之外,无权访问其他系统资源。但在hypervisor中,hypervisor指示给定的guest OS可以访问哪些硬件资源。由于hypervisor的VMM虚拟化了基础硬件,因此通常可以更好地与各种OS配合使用,并且可以更轻松地提供对必要系统资源的访问。使多个guest OS在特定硬件上运行可能会花费大量的时间和精力,而使用hypervisor,他们会将硬件抽象为虚拟版本,使工程师更容易在VM上启动并运行OS。应注意的是,自己提供hypervisor的公司和组织必须使它们各自适应不同的处理器和相关硬件。

也就是说,许多汽车hypervisor的公司和开源组织正在努力通过建立诸如VIRTIO之类的标准来使他们更轻松地使用各种类型的硬件。

下次我们继续说说虚拟化的类型和hypervisor的功能等内容。


from A to B

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多