如何让四核 ARM 的一个核心在没有操作系统的情况下运行

如何让四核 ARM 的一个核心在没有操作系统的情况下运行

我使用的是四核 ARM CPU,我想知道是否可以在 Linux 中运行 3 个核心,在没有 Linux 的情况下运行一个核心?

答案1

您不能只采用两个操作系统,一个在一个内核上运行,另一个在另一个内核上运行。 (“无操作系统”是一种特殊情况,无论您有效运行的任何代码都将其自己的操作系统合并到应用程序代码中。)可以通过这种方式运行多个操作系统,但它们需要相互了解并仔细编写避免互相踩踏。

即使您将一个操作系统分配给一个内核,并将一个操作系统分配给另一个内核,计算机也不仅仅是处理器。操作系统将争夺内存和外设。也许可以告诉 Linux 内核完全远离一个核心(我不确定这是否可能:仅仅告诉它不要在那里安排任何进程是不够的,这很容易,您还需要确保内核不会尝试让该内核接收任何中断),但这只是最明显的问题。如果您想使用 Linux 不使用的核心,您需要确保 Linux 不会将其关闭作为其电源管理机制的一部分。

然后是记忆。告诉 Linux 远离物理内存的某些区域很容易。但只有一个内存管理单元适用于所有内核,Linux 需要它。要使 Linux 与另一个操作系统共存,您需要对其 MMU 管理代码进行重大更改,以便允许另一个操作系统拥有部分 MMU 数据,并且两个操作系统需要就如何使用 MMU 达成一致。 MMMU。从技术上讲,操作系统可以在没有 MMU 的情况下运行,但至少对于 ARM CPU 来说,没有 MMU 不仅意味着没有虚拟内存(显然),而且也没有缓存,速度非常慢。

然后是外围设备。实际上,如果您运行多个操作系统,则每个外围设备都必须由一个操作系统拥有,而另一个必须保持关闭状态。两个操作系统甚至不可能同时使用同一总线,因此同一总线上的所有外设必须属于同一操作系统。

如果你想运行多个操作系统,核心并不是如何分割它们的。你需要虚拟化所有这些共享资源——物理内存、虚拟内存、外设,您还可以虚拟化 CPU 本身。这是用完成的虚拟机:每个操作系统都运行在一台虚拟机中,可以访问虚拟CPU、虚拟MMU、虚拟中断等,并且有一个操作系统是主持人拥有所有这些虚拟机并可以访问实际硬件。当主机专门运行虚拟机而不做其他事情时,它被称为管理程序

相关内容