JasonWang's Blog

虚拟化之一虚拟机的基本概念

字数统计: 1.6k阅读时长: 5 min
2023/06/30

这两年汽车领域在智能与域融合的推动下,开始兴起了各种虚拟化(Virtualization)的座舱解决方案,尤其以黑莓公司的QNX虚拟化方案应用最为广泛。说起来,虚拟化并不是什么新的概念,操作系统诞生之初就有了类似的原型: 对于一个分时的操作系统,通过在不同进程之间切换状态,给每个用户都制造一种完全使用整个机器的感觉,实则是操作系统通过进程之间的资源分时复用实现的结果。简单来说,虚拟化就是一种资源隔离与抽象的方案,通过对CPUMemoryI/O设备增加中间层的访问控制,以达到与访问物理资源同等的效果。

在接下来的三篇文章里,我们就来一起来梳理虚拟化方案的整体脉络,先从大的基本概念入手,再将具体的实现细节,力求能够理解虚拟化的基本概念与实现原理:

  • 虚拟机的基本概念,主要讲虚拟化方案的优势,类型以及常见的虚拟化方案
  • 汽车软件中常用的QNX虚拟化平台介绍,以及CPUI/OMemory以及中断虚拟化的具体原理
  • Linux下的I/O设备虚拟化方案virtio的原理介绍

这篇文章,我们就来看看虚拟化的一些基本概念,以及实现的类型与方式。

虚拟化的基本概念

从本质来说,虚拟化是一种资源隔离与权限访问控制的方法,比如常见的操作系统中的虚拟内存(Virtual Memory)以及Java中的JVM(Java Virtual Machine)都是基于类似的思路实现的。JVM是一种语言级别的虚拟化解决方案,其更多的是为了提供一个跨平台的执行环境,以解决编程语言的移植性;对于系统级别的虚拟化方案,如VMWare/Xen/QNX等,则是为了虚拟化整个操作系统所需要的环境,从而实现不同操作系统在同一个平台运行的目的。

常见的虚拟化方案有两种,分别称为type-1type-2:

  • type-1的虚拟化方案的hypervisor直接运行在硬件上,此类虚拟机常见的有VMWare ESX serverXen以及QNX
  • type-2的虚拟化方案的hypervisor则跑在一个宿主操作系统上,常见的虚拟机有QEMUVMWare WorkstationsKVMOracle VirtualBox

虚拟化平台类型

hypervisor是为虚拟机提供运行环境的系统软件,其目的是为了尽可能减少虚拟化带来的性能损失,也被称为Virtual Machine Monitor(VMM)

1974年, PopekGoldberg提出了一个虚拟化管理程序hypervisor所需要遵循的三个基本的原则:

  • Equivalence(等价性): 虚拟机所执行的环境跟实际的物理硬件是等价的,一个Guest操作系统并不需要知道其本身是运行在虚拟机上还是实际的物理机上。这个规定相对而言比较严格,有时为了实现某些功能或者性能需要,Guest操作系统可能需要知道自己当前执行的是虚拟环境。
  • Safty(安全): 虚拟化的隔离要求不同的虚拟机之间以及与hypervisor是完全隔离的,确保每个系统都是模块化的,互不影响。
  • Performance(性能): 虚拟化hypervisor需要尽可能的减少因为隔离与控制切换带来的性能损失,以接近于真实的物理执行环境的速度。

虚拟化的方法

早期的很多虚拟化方案,由于没有芯片指令级的支持,通常都需要通过二进制翻译(binary translation)的方式来达到trap-and-emulate(陷入与模拟)的虚拟化隔离,但这种方式效率较低,因此随着后续x86ARM等平台增加了专门用于虚拟化的指令集,从而提升了虚拟机程序执行的效率。

实现虚拟化的方法一般有如下三种(下图中包含了软虚拟化与半虚拟化方案的示意图):

  • 软件虚拟化(Full(software) Virtualization): 虚拟机完全运行在hypervisor之上,并不知道当前运行在虚拟的环境中。常见的虚拟化提供商VirtualBox/VMWare都有类似的解决方案
  • 硬件辅助虚拟化(Hardware Virtualization, HVM): 通过在芯片指令集中增加特殊的指令来辅助进行虚拟化,以提升虚拟化的性能
  • 半虚拟化(Paravirtualization): 半虚拟化方案则通过虚拟机与hypervisor相互协作以完成虚拟化操作,此时虚拟机需要做额外的配置以实现虚拟化

虚拟化的实现方法

总结

虚拟化的概念伴随着计算机操作系统的概念一起诞生的,至今已有几十年历史。不管是在个人消费领域,还是分布式系统上,都可以看到虚拟化的身影。而在汽车领域,由于软件定义汽车(SDV(Software Define Vehicle)/SOA(Service Oriented Achitecture)等概念与方案的逐步落地,用户对车辆不再满足于单一行车的功能,而是会有更多如个性化、智能化以及网联的需求。这些功能要求汽车厂商以及供应商具备更快速开发迭代的能力。目前虚拟化方案已经开始成为主机厂与方案供应商T1的首选方案了。未来,相信随着智能座舱域与自动驾驶域逐步走向融合,虚拟化方案由于其安全、高可用性、资源隔离等优点会得到更多的应用。

在下一篇文章,我们就一起来看看汽车领域的虚拟化方案领先者-QNX系统的架构与虚拟化实现原理。

参考文献

原文作者:Jason Wang

更新日期:2023-06-30, 14:06:42

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. 虚拟化的基本概念
  2. 2. 虚拟化的方法
  3. 3. 总结
  4. 4. 参考文献