2009-06-15 64 views
3

(我問,因爲這是嚴重的SMP和我研究操作系統的多核之前,我想有一個如何被執行的代碼部分視力。)在多核x86處理器設置親和力

如果我有一個x86多核CPU直接啓動到我的程序中。有人可以推薦一個網站,它描述了我必須控制親和力的彙編程序命令嗎?

回答

5

親和性不是由CPU狀態決定的,因此不能通過程序集(單獨)進行修改。您需要OS的參與。每個操作系統都會有一個特定的呼叫來執行此操作。

操作系統會做什麼:操作系統將有一個調度程序,它實際上是一個程序,它決定哪個進程在什麼處理器上運行。通過將親和力設置爲用戶,可以配置此調度程序。如果你沒有操作系統(這個問題似乎暗示我認爲),那麼你自己編寫調度程序,你將擁有自己的配置控制權,並且你可能會從全局runqueue開始併爲每個處理器(核心)觀察該runqueue,並檢索從中運行的進程。

那麼這是如何工作呢?在啓動過程中,只有一個CPU正在運行。如果你作爲操作系統已經準備好了,你可以「啓動」其他開始執行你的代碼的CPU,並且可能會運行一種調度器。

有關示例實現,請參閱Linux 2.6.29 arch/x86/kernel/smpboot.c函數do_boot_cpu(),它使用API​​C以幾種方式使CPU聯機。