操作系统|嵌入式开发:多核系统、虚拟机监控程序和多核框架

操作系统|嵌入式开发:多核系统、虚拟机监控程序和多核框架

【操作系统|嵌入式开发:多核系统、虚拟机监控程序和多核框架】在嵌入式开发中 , 多核嵌入式系统的软件可能非常复杂 。 一个经常讨论的主题是如何在每个核心上实现代码 , 从而使其得到最佳利用 。 在这篇短文中 , 有一个不同的视角:关注可以跨多个核心运行的软件 。
多核硬件体系结构
从硬件的角度来看 , 多核设备大致有两种类型:同质多核(其中有多个相同类型的核)和异质多核(其中核的类型不同) 。 异构设备可以包括一些相同的核心 。
要跨多个内核运行单个软件 , 内核必须相同(无论如何 , 从指令集的角度来看) 。 因此 , 需要一个同质多核设备或异质设备中的同质“岛” 。
对称多处理
构建多核系统的一个原因是以节能的方式最大化计算能力 。 这是个人电脑设计师所采取的方法;多核处理器在笔记本电脑和台式机系统中几乎无处不在 。 嵌入式开发人员可能有同样的目标 。 最好的方法是使用支持对称多处理(SMP)的操作系统 。
SMP操作系统将进程分布在可用的内核上 。 这通常是自动的 , 但嵌入式开发人员可能需要执行一些控制 , 并可能将某些应用程序锁定到特定的核心 。 进程不“知道”它们正在不同的内核上运行;操作系统提供它们之间的通信和同步 。 多种实时操作系统(RTOS)的SMP版本可用;Linux还提供SMP变体 。

管理程序
尽管嵌入式SMP操作系统提供了某种程度的控制 , 但嵌入式开发人员通常希望确保资源分配完全按照他们的喜好进行配置 。 因此 , 另一种选择是使用自己的操作系统实例配置每个核心 , 并且所有核心不必运行相同的操作系统和应用程序代码 。 然后 , 在所有可以控制其操作(引导顺序等)并提供内核间(或操作系统间)通信的内核上运行虚拟机监控程序 。要获得更大的灵活性…
到目前为止 , 我们已经通过从系统中的单个(SMP)操作系统转移到多个可能不同的操作系统实例来提高灵活性 。 但是 , 如果需要更大的灵活性 , 需要使用不同体系结构的核心 , 该怎么办?这取消了跨多核运行代码的选项–SMP操作系统或虚拟机监控程序都需要一个同构的多核环境 。 但是 , 还有另一种选择:在每个核心上运行多核框架(可能是基于OpenAMP的产品) 。 这种方法提供了核心间通信和生命周期管理 。 此外 , 可以选择在“裸机”(即没有操作系统)上运行应用程序 。
结论
在多核嵌入式系统上开发软件是一项复杂的任务 。 嵌入式开发人员有必要考虑一些选项——相对简单性和完全灵活性之间的权衡 。