2011-05-05 89 views
2

之前已詢問過此問題(例如,請參見herehere)。然而,事情仍然不清楚。我希望有人能澄清他們。問題很簡單:假設沒有操作系統,如果我想要某個處理器與另一個處理器同時執行一些代碼,那麼這是如何實現的?如果需要的話,你也可以假設一些簡單的基於隊列的調度器,這在其他一些問題中仍然存在調度器如何產生線程/進程或其他任何內核中的任何問題。謝謝。裝配,多核和每核心線程:如何在裝配中產生線程?

+1

什麼是你想知道的是,接受的答案http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like does not cover? – 2011-05-05 14:31:41

+2

這個問題不包括如何在沒有操作系統的情況下喚醒第二個內核 – hirschhornsalz 2011-05-05 15:52:09

回答

5

啓動第二個處理器通常是非常痛苦的,因爲它涉及到很多ACPI的東西。這意味着,它不在處理器中,你必須編程其他硬件。

基本上其他的cpus是通過ACPI初始化的,並且在包含蹦牀代碼的某個預定義地址空間處開始執行。從那裏他們正在等待安排。

但是,如果你想編寫自己的smp的東西,你當然可以指示第二個cpu立即爲你執行一些代碼。

如果你想有一些示例代碼,你可以看看Linux內核代碼:

http://lxr.linux.no/#linux+v2.6.33/arch/x86/kernel/smpboot.c