2012-09-21 135 views
0

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

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

回答

2

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

有仍有CPU特定的初始化:

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