2012-09-21 148 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(硬件的地址轉換緩存)。