多核处理器下的80x86汇编语言

时间:2015-12-29 18:00:11

标签: assembly x86

计算机的启动过程以0处理器的0核中的单线程启动,但在加载并执行操作系统内核代码后,处理器建立多核处理(多线程)。

操作系统内核如何启用多核执行? (执行此操作的汇编代码是什么?)

1 个答案:

答案 0 :(得分:1)

根据the MP spec

  

一个处理器在启动时运行,即BSP(引导系统处理器)。所有   其他CPU,AP(应用程序处理器)也被禁用   硬件或BIOS(或两者)。必须由操作系统启用AP   (因此AT兼容性),通过APIC IPI(INIT& STARTUP)。之前   启用时,它们处于暂停状态且中断被禁用(但是   INIT& STARTUP IPI没有被掩盖。)

所以其余的逻辑CPU都是通过发送处理器间中断来启动的,在将代码放到任何地方之后它们会尝试运行代码。

在编程APIC(高级可编程中断控制器)以向其他内核提供中断以唤醒它们方面,可能更有用。 ACPI表提供了确切地决定做什么的必要信息。 (感谢Ross Ridge的澄清:这是通过正常存储指令进入MMIO空间完成的。)

这应该足以概念性地理解它的工作原理,而不是自己为自定义操作系统实际实现它。正如Michael Petch先前评论的那样,Ciro Santilli's answer on a similar question有一些特定的代码可以解决一些复杂问题。

相关问题