【问题标题】:Assembly, multicore and per core threads: How is a thread is spawned in assembly?汇编、多核和每核线程:如何在汇编中生成线程?
【发布时间】:2011-05-05 14:22:45
【问题描述】:

之前有人问过这个问题(例如,参见herehere)。然而,事情对我来说仍然不清楚。我希望有人可以澄清他们。问题很简单:假设没有操作系统,如果我想让某个处理器和另一个处理器同时执行一些代码,这是如何实现的?如果需要,您还可以假设一些简单的基于队列的调度程序,它(在其他几个问题中)仍然提出调度程序如何在其他内核中生成线程/进程或其他任何内容的问题。谢谢。

【问题讨论】:

标签: assembly multicore


【解决方案1】:

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

基本上,其他 cpu 是通过 ACPI 初始化的,并在一些包含蹦床代码的预定义地址空间开始执行。从那里开始,他们正在等待安排。

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2011-10-05
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多