以前曾问过这个问题(例如,请参阅here和here)。但是,我还不清楚。我希望有人可以澄清它们。问题很简单:假设没有操作系统,如果我希望某个处理器与另一个处理器同时执行某些代码,这是如何实现的?如果需要,您还可以假设一些简单的基于队列的调度程序,(在其他几个问题中)仍然存在调度程序如何产生线程/进程或其他核心中的任何问题的问题。感谢。
答案 0 :(得分:5)
启动第二个处理器通常非常痛苦,因为它涉及很多ACPI的东西。这意味着,它不仅仅在处理器中,您还必须对其他硬件进行编程。
基本上,其他cpu通过ACPI初始化,并在包含trampoline代码的某个预定义地址空间开始执行。从那时起,他们正在等待安排。
但是如果你想编写自己的smp东西,你当然可以指示第二个cpu立即为你执行一些代码。
如果您想要一些示例代码,可以查看linux内核代码:
http://lxr.linux.no/#linux+v2.6.33/arch/x86/kernel/smpboot.c