SMP系统上的内核初始化

时间:2012-09-21 18:20:31

标签: linux-kernel boot smp

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

现在我知道对于不同的核心可以有不同的高速缓存但我们有不同核心的主存和MMU吗?我从来没听说过。这里究竟发生了什么以及如何在CPU之间发生主存和MMU的划分?

1 个答案:

答案 0 :(得分:2)

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

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

  1. 每个CPU可以为自己分配一个小内存池,以便进行有效分配。
  2. 应在每个CPU上设置将硬件定向到分页表的控制寄存器。
  3. 可能需要设置或刷新TLB(硬件的地址转换缓存)。