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

Der*_*unk 2 assembly multicore

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

Gun*_*iez 5

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

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

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

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

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