0

当我们在 SMP 系统上启动内核时,CPU0 启动内核代码,在 CPUx 处于 WFI 状态时,CPU0 的主内存、缓存和 MMU 被初始化。当从 CPU0 发送 cpu_up(x) 时,每个 CPUx 都被初始化并调用 secondary_startup ,其中再次初始化 CPUx 特定的主存储器、高速缓存和 MMU。

现在我知道不同内核的缓存缓存可能不同,但是我们是否也有不同内核的主存和 MMU?我从来没有听说过。这里到底发生了什么,主存和 MMU 的划分是如何在 CPU 之间发生的?

4

1 回答 1

2

在 SMP 系统(或像今天的 x86 CPU 之类的 NUMA 系统)中,所有 CPU 都可以访问所有内存。所以CPU0可以初始化所有的内存。

CPU 特定的初始化仍有空间:

  1. 每个 CPU 可以为自己分配一个小的内存池,以进行有效分配。
  2. 应在每个 CPU 上设置将硬件引导至分页表的控制寄存器。
  3. 可能需要设置或刷新 TLB(硬件的地址转换缓存)。
于 2012-09-21T20:52:25.250 回答