(我問,因爲這是嚴重的SMP和我研究操作系統的多核之前,我想有一個如何被執行的代碼部分視力。)在多核x86處理器設置親和力
如果我有一個x86多核CPU直接啓動到我的程序中。有人可以推薦一個網站,它描述了我必須控制親和力的彙編程序命令嗎?
(我問,因爲這是嚴重的SMP和我研究操作系統的多核之前,我想有一個如何被執行的代碼部分視力。)在多核x86處理器設置親和力
如果我有一個x86多核CPU直接啓動到我的程序中。有人可以推薦一個網站,它描述了我必須控制親和力的彙編程序命令嗎?
親和性不是由CPU狀態決定的,因此不能通過程序集(單獨)進行修改。您需要OS的參與。每個操作系統都會有一個特定的呼叫來執行此操作。
操作系統會做什麼:操作系統將有一個調度程序,它實際上是一個程序,它決定哪個進程在什麼處理器上運行。通過將親和力設置爲用戶,可以配置此調度程序。如果你沒有操作系統(這個問題似乎暗示我認爲),那麼你自己編寫調度程序,你將擁有自己的配置控制權,並且你可能會從全局runqueue開始併爲每個處理器(核心)觀察該runqueue,並檢索從中運行的進程。
那麼這是如何工作呢?在啓動過程中,只有一個CPU正在運行。如果你作爲操作系統已經準備好了,你可以「啓動」其他開始執行你的代碼的CPU,並且可能會運行一種調度器。
有關示例實現,請參閱Linux 2.6.29 arch/x86/kernel/smpboot.c函數do_boot_cpu(),它使用APIC以幾種方式使CPU聯機。
下面是關於QNX如何做的一個很好的解釋。它不會去儘可能提供所需ASM(這將是平臺相關反正),但它可能與概念幫助:
http://www.embedded.com/columns/technicalinsights/183702309?_requestid=408789
和來自同一個站點的一系列文章
http://www.embedded.com/products/integratedcircuits/173400008?_requestid=409058
鏈接被破壞 – sloven 2017-09-21 02:42:18