汇编,多核和每核心线程:如何在汇编中生成线程?

时间:2011-05-05 14:22:46

标签: assembly multicore

以前曾问过这个问题(例如,请参阅herehere)。但是,我还不清楚。我希望有人可以澄清它们。问题很简单:假设没有操作系统,如果我希望某个处理器与另一个处理器同时执行某些代码,这是如何实现的?如果需要,您还可以假设一些简单的基于队列的调度程序,(在其他几个问题中)仍然存在调度程序如何产生线程/进程或其他核心中的任何问题的问题。感谢。

1 个答案:

答案 0 :(得分:5)

启动第二个处理器通常非常痛苦,因为它涉及很多ACPI的东西。这意味着,它不仅仅在处理器中,您还必须对其他硬件进行编程。

基本上,其他cpu通过ACPI初始化,并在包含trampoline代码的某个预定义地址空间开始执行。从那时起,他们正在等待安排。

但是如果你想编写自己的smp东西,你当然可以指示第二个cpu立即为你执行一些代码。

如果您想要一些示例代码,可以查看linux内核代码:

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