在功能强大的计算机中使用虚拟机管理程序的想法是众所周知的。它有利于同时使用多个操作系统,并提供了可以在其中部署未修改的旧版软件的虚拟化环境。虚拟机管理程序在现代嵌入式系统中也占有一席之地。本文考虑了嵌入式管理程序的特性,它可以提供的功能以及一些典型的应用程序。

有些技术不应该真正存在。但是,之所以这样做,是因为它们满足特定的需求。通常,此类技术会拉伸某些东西以使其以最初未预期的方式执行。传真机就是一个例子。在纸质办公环境中,经常需要将文档从A移到B。最初,这导致了邮件的产生。但是传真是使用电话线产生类似结果的一种巧妙方法。电子邮件普及后,传真几乎在一夜之间消失了。国内宽带是另一个例子–古老的铜线用于以几年前被认为是完全不可能的速度提供数字连接。虚拟机管理程序是在世界上已经占有一席之地的另一项“不应存在”的技术。

image.png

什么是管理程序?

广义上讲,管理程序是一个软件层,它使多个操作系统可以在单个硬件平台上同时运行。它们已经在大型机上使用了数十年,最近在台式机上也得到了使用,但是现在开始与嵌入式开发人员非常相关。

虚拟机管理程序并不是真正的新技术–大约50年前,大型计算机上就推出了第一批可识别的产品。当时的动机是最好地利用昂贵的资源。需要高效使用昂贵的硬件才能完全经济,而且停机时间也很昂贵。需要保护软件投资,因此促进在新硬件上无缝执行很有吸引力。具有讽刺意味的是,IBM的早期虚拟化软件以源代码形式分发(最初不提供支持),并由用户修改/增强。在构思开放源代码概念之前已有很多年了。

在现代嵌入式系统的背景下,要记住在一个硬件上运行多个OS有何好处?最重要的答案是安全性。系统管理程序在来宾操作系统之间提供了非常强大的隔离和保护层,从而确保了一个多线程应用程序不会干扰另一个应用程序。IP重用是运行多个操作系统的次要但仍然非常重要的动机。想象一下,您想在设计中使用一些重要的Linux软件IP。但是,您的设备是实时的,因此RTOS更有意义。如果不选择多核(因为这是在一个设备上运行多个操作系统的另一种方式),则使用虚拟机管理程序是前进的方式,以便您可以运行Linux和RTOS。

虚拟机管理程序的类型虚拟机管理程序本质上有两种类型,它们被想象地命名为1型和2型。类型2需要基础主机操作系统。对于嵌入式应用程序,类型1对于大多数应用程序最有意义。

多核– SMP和AMP

有关管理程序在单个硬件平台上启用多个OS的说法意味着这意味着一个处理器。实际上,许多产品都支持使用多个CPU,并通过虚拟机管理程序分配资源。要进一步探索这一点,需要稍微考虑多核基础知识。

从软件的角度来看,本质上有两种类型的多核体系结构:对称多处理(SMP)和非对称多处理(AMP)。使用SMP,可以在所有CPU核上运行单个操作系统,该核必须具有相同的体系结构。操作系统需要专门设计为在SMP系统中运行。在AMP系统中,每个CPU都运行自己的OS(或完全不运行)。CPU不必具有相同的体系结构。

虚拟机管理程序和多核

所有嵌入式系统都具有有限的资源,需要对其进行管理。可以说这是嵌入式软件开发的关键所在。为了便于讨论,我们将考虑一个具有单个串行端口的假设示例系统。根据软件和CPU硬件的配置,可以通过多种方式管理此端口。

在单核系统上,操作系统可以管理对串行端口的访问,并可以在可能希望使用它的多个任务之间进行仲裁。有很多方法可以实现这一点,这是一条通俗易懂的道路。

如果系统具有多个相同的核心,则将其配置为SMP(在所有核心上运行的单个操作系统实例)可能会很有用。提供了许多RTOS产品的SMP版本(例如Nucleus),并且具有SMP支持的Linux也可以选择。如果应用程序受益于OS能够根据需要分配CPU电源,则此方法是理想的。操作系统可以通过与在单个核心系统上几乎相同的方式来管理对串行端口的访问。

在许多系统上,SMP并没有吸引力,因为需要更精确的控制,或者系统具有如此多的内核,因此性能可能会下降。在其他方面,由于内核不相同,所以SMP是不可能的。在这些情况下,在每个内核上都有单独的OS实例的AMP配置是有意义的。这就提出了一个挑战:如何管理单个串行端口?

如果系统中的所有内核都适合运行虚拟机监控程序,则可以在所有内核上运行它,每个内核的操作系统都被视为“来宾”。然后可以由管理程序管理对串行端口的访问。

如果一个或多个内核不能运行虚拟机监控程序(因为它们是性能较低的处理器),则可以使用另一种选择(例如,Mentor Embedded的异构多核框架HMF)。这便于在其他地方(在同一芯片上功能更强大的CPU上)运行的管理程序对较小内核的管理。因此,系统管理程序可以管理系统中所有核心(无论运行系统管理程序还是HMF)对串行端口的访问。

嵌入式管理程序应用程序嵌入式管理程序可以

在三个应用程序领域中找到自己的位置:

在这种情况下,信息娱乐软件,仪表板控制和远程信息处理可能全部运行在单个多核芯片上。由于可能需要混合使用多种操作系统,例如用于仪器的RTOS和用于音频的GPS和Linux,因此管理程序非常有意义。

对于工业应用(工厂,矿山,发电厂等),通常需要实时控制(RTOS)和复杂的网络(Linux)。另外,近年来,人们越来越关注网络攻击或将恶意软件引入控制系统。管理程序是分离系统和维护安全性的理想方法。

医疗系统带来了一些新的挑战。通常,实时(患者监视和治疗控制)和非实时(数据存储,网络和用户界面)功能混合在一起,因此虚拟机管理程序最初看起来很有吸引力。患者数据的机密性至关重要,因此管理程序的安全性变得很重要。最后,完全分离需要认证的系统部分(通常是实时部分)的能力使虚拟机监控程序具有吸引力。