嵌入式虚拟化技术与应用:ACRN开源项目实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

嵌入式系统与虚拟化技术似乎是两个独立的技术领域,没有交集。但随着物联网设备的爆炸式增长和万物互联应用的快速发展,嵌入式虚拟化技术这个跨界创新组合应运而生,也越来越受到业界的关注和重视。本书将主要回答两个问题:为什么嵌入式系统需要虚拟化技术?如何在资源受限的嵌入式系统上实现虚拟化技术?

为什么嵌入式系统需要虚拟化技术

因为虚拟化技术已经来到了下一个风口——万物互联时代的虚拟化!

先从虚拟化技术的发展历史说起。虚拟化技术得益于分时操作系统和PC的蓬勃发展,现代虚拟化技术已经有了20多年的发展历史。而真正催生虚拟化技术快速部署和发展的是云时代春天的到来。开源虚拟化技术和Linux催生了基础设施即服务(Infrastructure as a Service,IaaS),开启了云计算时代的新篇章。虚拟机可以作为服务,提供一系列独特优势,例如弹性资源共享、快速部署、廉价方便、集中式IT管理等。这个起始于大型电商的内部技术革新,迅速成长为一种公共服务,构成了云计算时代的基础。云计算技术的发展使得作为标准化产品的虚拟机作为服务走入“寻常百姓家”。目前各大云服务厂商都不约而同地切换到基于KVM技术的云架构上,并发展出各种各样的应用技术。

进入新世纪后,计算机领域出现了另一个新的虚拟化应用场景——万物互联,进一步促进了虚拟化技术的应用落地和发展。万物互联是把百亿级别的嵌入式设备整合在一起,并通过云连接起来。虚拟化技术因此在嵌入式领域得到广泛的应用,以此整合各种单一功能设备,通过共同的网络接口接入互联网,构建更加高效、低成本的万物互联系统。这也是实现工业4.0的必由之路。

促使嵌入式设备支持虚拟化技术的原因有如下几点。第一,随着半导体技术的发展,摩尔定律推动硬件的性能提升,成本下降。今天的嵌入式SoC的性能甚至可能超过了昨天的服务器。第二,无处不在的CPU多核技术的发展自然地能够支持多个系统。第三是业务的负载整合、数字化互联的需求。出于节约成本考虑,系统整合并重用已有的软件系统,降低移植工作量,减少硬件系统的互连,降低整体硬件系统的复杂度,可以把多个“异构”的操作系统和业务整合在一套硬件系统上。这些都需要虚拟化技术在嵌入式设备上的支持。

如何在资源受限的嵌入式系统上实现虚拟化

“云”虚拟化和“物”虚拟化两种技术虽然同根同源,但是嵌入式虚拟化技术和传统虚拟化技术还是有很多不同的地方,例如应用场景和目标定位不同、可用的资源多寡不同、支持的物理硬件设备和外设不同、软件发布的模式不同、各自的生态系统不同。为此,本书专门选择了Linux开源基金会下支持Intel x86平台的开源嵌入式虚拟机管理程序ACRN进行架构剖析和代码实现的解读。主要原因有两点。第一,在嵌入式虚拟机市场上大多都是闭源的商用软件,以支持Arm平台为主,开源的、专门为嵌入式设备设计的虚拟机在市面上并不多见。第二,ACRN具有如下特点:在x86平台上支持实时操作系统;小尺寸,额外开销小;能通过工业IEC 61508功能安全认证;具有BSD 3.0友好的许可证,完全开源。

虚拟化技术主要包括四部分核心内容:CPU虚拟化、内存虚拟化、中断虚拟化和设备虚拟化。本书围绕这四个方面,以ACRN为例介绍如何在嵌入式系统上实现一个完整的虚拟机管理程序(VMM或者Hypervisor)。本书首先介绍最基本的、通用的虚拟化技术原理。考虑到云虚拟化技术和KVM的广泛流行,再以主流开源KVM为例来介绍其CPU、内存、中断和设备虚拟化的实现。有了这两章的铺垫,当读者随后读到ACRN的架构设计和代码实现时,可以一边比较KVM,一边理解嵌入式系统上虚拟化技术实现的要点。本书还有两章是针对ACRN的高级技术的,分别是性能调优和功能安全认证。因为嵌入式虚拟机Hypervisor是运行在嵌入式硬件和实时操作系统之间的薄薄的软件层,Hypervisor的出现会对整机的实时性能带来额外的开销,对于如何最大限度地减少Hypervisor自身引入的实时开销,读者可以阅读性能调优相关章节。ACRN还有另外一个独特优点,它是第一个能支持IEC 61508安全认证的开源虚拟机。以前只有商用虚拟机软件才能够完成的安全认证,开源虚拟机也能做到。本书讨论安全认证实现的章节将从技术和流程两个方面“解密”如何实现这一目标。

目标读者

在某种程度上可以将嵌入式系统的虚拟化技术看作一门跨领域的交叉技术。虚拟化技术本身涉及操作系统、计算机体系结构等领域知识。当把虚拟化技术“嫁接”到嵌入式系统上时,除了虚拟化技术背景之外,工作人员还必须具有良好的嵌入式系统设计经验。Hypervisor要运行在资源受限的硬件平台上,性能调优又必须是整机系统(硬件+虚拟机+实时操作系统+应用程序)的调优,所以工作人员还需要一些“螺蛳壳里做道场”的系统调优能力。

另外,本书并没有定位成一本纯理论的学术书籍,而是一本综合了虚拟化原理知识和技术实践的图书。本书定位的读者包括:

●从事嵌入式虚拟化领域开发的研发人员或专业技术人员。

●从事嵌入式系统开发,但是对虚拟化技术感兴趣的研发人员。

●从事虚拟化领域开发,但是希望扩展到嵌入式领域的研发人员。

全书结构

本书的逻辑主线是按照如下思路来组织的:为什么需要嵌入式虚拟化技术→如何实现嵌入式虚拟化→嵌入式虚拟化和主流的云虚拟化在实现上有何不同→嵌入式虚拟化技术在哪些领域可以带来价值。各章具体内容简介如下。

第1章主要介绍虚拟化技术的发展历史、虚拟机的三种模型、虚拟化技术的分类,并分析当前嵌入式虚拟化技术所面临的发展和挑战。

第2章介绍虚拟化技术的通用概念,并描述处理器虚拟化、内存虚拟化和I/O虚拟化的实现,比较“云”虚拟化和“物”虚拟化,以及嵌入式虚拟化技术的特征和必要性。

第3章主要介绍在服务器领域广泛使用的KVM的基本原理,并探讨其与嵌入式领域虚拟化技术的不同之处。通过实现一个极简版的用户态VMM,进而描述KVM的主要功能实现:CPU虚拟化、内存虚拟化、中断虚拟化和设备虚拟化。

第4章介绍一个Linux基金会下的专门为资源受限的嵌入式设备而设计的虚拟机ACRN。它尺寸小,额外开销小,专门为实时系统进行了设计和优化,同时具有完全开源、友好的许可证。该章将深入介绍ACRN嵌入式虚拟机的具体实现,包括CPU虚拟化、内存虚拟化、中断虚拟化和I/O虚拟化的框架支持,并提供设计框图及部分流程图。

第5章继续介绍ACRN中的设备虚拟化。丰富的I/O设备虚拟化支持是ACRN的另一个优势,也是专门为嵌入式系统而设计实现的。

第6章主要介绍ACRN系统的使用和环境搭建过程,并配有完整的安装部署入门指南,方便读者了解和具体操作ACRN。

第7章介绍嵌入式虚拟机如何能够支持实时性,以及如何做到性能调优,并结合Intel硬件平台和ACRN虚拟机介绍几种常用的实时优化思路及工具。

第8章介绍嵌入式实时操作系统。虽然本书主要介绍嵌入式虚拟机,但是也需要对运行在Hypervisor之上的嵌入式操作系统进行介绍,因为两者需要配合在一起才能实现业务应用程序的实时性能。ACRN是在x86硬件平台上实现的,所以该章主要介绍三个比较流行的x86平台上的开源实时操作系统。

ACRN是第一个能够通过功能安全认证的开源的虚拟机Hypervisor。第9章主要从流程和技术两方面来分享ACRN的功能安全的工程实践。

第10章介绍智能数控系统和数字孪生的实现。借助虚拟化技术来实现智能数控系统,可以把传统数控系统设备端侧的各个分离的单独控制器整合到同一平台上,还可以通过数字孪生技术在云中构建设备的数字实例。

第11章介绍如何使用虚拟化技术进行工作负载整合。通过把机器视觉和机器控制整合在一个物理硬件平台上运行,可以使工业设备装上“眼睛”和“手臂”,既可以看到需要识别的物品,又可以使用机器控制执行相应的操作。

第12章主要介绍如何通过虚拟化方案使移动机器人、复合机器人的设计变得更从容,同时可以从控制器的体积、成本、功耗、性能、安全等角度满足机器人开发所需,为多样化的上层应用打好基础。

第13章介绍虚拟化技术在智能驾驶舱中的解决方案。通过虚拟化技术,数字仪表盘系统及车载娱乐系统现在可以同时运行在一颗SoC处理器上,从而降低整机成本和平台的集成复杂性。

如何阅读本书

本书大体上介绍了5部分技术内容,读者可以针对自己的兴趣点来阅读。

●希望了解虚拟化技术基础知识的读者,可以阅读第1、2章。

●希望了解服务器上常用的KVM虚拟机实现的读者,可以阅读第3章。

●希望了解如何实现一个完整的嵌入式虚拟机的读者,可以阅读第4~6章。

●希望了解如何进行实时性能调优的读者,可以阅读第7章。

●希望了解常用x86平台的开源实时操作系统的读者,可以阅读第8章。

●希望了解功能安全认证的读者,可以阅读第9章。

●希望了解嵌入式虚拟机的应用场景和实际案例的读者,可以阅读第10~13章。

致谢

本书的作者都是英特尔公司的工程师。他们有的是来自开源技术中心部门的虚拟化开发工程师,有的是来自物联网事业部的开发工程师或市场经理。他们大都在虚拟化领域、嵌入式领域、工业领域沉浸和工作多年,具有丰富的技术实践经验。

写作本书主要有三个原因。第一,虚拟化技术的发展。在2008年,英特尔开源软件技术中心的虚拟化团队和复旦大学并行处理研究所合作并出版了《系统虚拟化——原理与实现》一书。十几年过去了,虚拟化技术依然发展迅猛,不仅使云计算资源唾手可得,而且伴随着万物互联时代的春风,虚拟化技术在嵌入式领域也迎来了新的大发展。所以,团队认为很有必要再续写一本书,来专门介绍新的嵌入式虚拟化技术的原理与实现。第二,本书的作者除了日常的技术开发工作,也负责客户的技术推广和产品落地,在与OEM、ODM、车企、设备制造厂商打交道时,他们深刻体会到我国制造行业的“一手硬、一手软”,即硬件制造优势领先,但软件设计开发能力却缺乏技术积累,水平有待提高。所以也希望本书能扮演一个虚拟化技术入门和普及的“敲门砖”的角色。虽然它不能使人“21天学会虚拟化”,但是通过ACRN开源软件的介绍(ACRN只有3万多行代码),却可以让人们有机会从第一行代码来了解、学习虚拟化技术,甚至开发自己的虚拟机管理程序,从而能掌握嵌入式和虚拟化技术的要点。第三,本书的策划编辑专门为团队提供了读者需求、业界热点技术分析,并给出了写作方向。

本书的作者分工如下:第1章由董耀祖、沈溢合作撰写;第2章由王稳超撰写;第3章由王稳超、邓杰合作撰写;第4章由曹明贵、高世青、单峻俊合作撰写;第5章由邓杰撰写;第6章由邹皓、江燕婷合作撰写;第7章由曹明贵撰写;第8章由曹剑波、杨湘、陈鹏、陈红展合作撰写;第9章由吴向阳撰写;第10章由沈溢、李世奇合作撰写;第11章由王洪波撰写;第12章由瞿好聪、杨洪、李世奇合作撰写;第13章由张泉撰写。王洪波、曹明贵、王稳超、邓杰、高世青对全书做了审校。感谢本书的技术顾问茅俊杰、王禹、孙捷。还要感谢机械工业出版社的编辑进行了细致的审稿,并提出了宝贵的修改建议,最终促成了本书的出版。

最后,感谢你在茫茫书海中选择了本书,并衷心祝愿你能从中受益。

编者

2023年5月