我们如何在Assembly boot loader x86上使用多核和cpu

时间:2014-10-19 15:57:20

标签: assembly operating-system bootloader

我正在阅读制作您的新操作系统文档,如下所示: http://joelgompert.com/OS/TableOfContents.htm

这些示例显示了如何为x86创建引导加载程序。 但我不知道如何让它并发? 是否有任何文档可以解释如何运行所有核心? 如何激活所有核心并运行asm将它们分开。

是否还有ARM CPU的文档? 或者有人可以在这里详细解释一下吗?

2 个答案:

答案 0 :(得分:1)

对于所有类型的CPU来说,它们并不完全相同(即使只是在x86中,它在不同的架构上当然更加完全不同)。

忽略古老的硬件,x86上程序的粗略草图:

  • 准备系统以启动其他cpu(首先只有1个核心处于活动状态)(解析MP表,初始APIC,做一些你需要的东西)
  • 发送SIPI
  • 等待它
  • 发送第二个SIPI(可能,不确定它有多必要)
  • 等待它
  • 让其他AP增加一个计数器,让你知道有多少人醒来
  • 等到尽可能多的AP启动(根据MP表中的核心数量)

有关更全面,更正确的步骤,请参阅“英特尔系统编程指南”第8章(多处理器管理)。

答案 1 :(得分:0)

以下是“ALLAN CRUSE”中的示例,其中显示了如何启动x86核心:http://www.cs.usfca.edu/~cruse/cs630/mphello.s