计算机的启动过程从0核中的单线程开始,但在加载和执行操作系统内核代码后,处理器建立多核处理(多线程)。
操作系统内核是如何启用多核执行的?(完成此操作的组装代码是什么?)
发布于 2015-12-29 20:56:09
根据MP规范
一个处理器在启动时运行,BSP ()。所有其他CPU( APs (应用程序处理器))都被硬件或BIOS (或两者兼而有之)禁用。通过APIC (INIT和启动),操作系统必须启用AP(因此是AT兼容性)。在启用之前,它们处于暂停状态,中断被禁用(但是INIT和启动IPI没有被屏蔽)。
因此,其余的逻辑CPU是通过向它们发送处理器间中断来启动的,在将代码放在任何地方之后,它们将尝试运行代码。
可能更有用的是,从编程的角度来看,高级可编程中断控制器(,APIC )将一个中断发送到其他内核以唤醒它们。ACPI表提供了必要的信息来准确地决定该做什么。(感谢Ridge的澄清:这是用MMIO空间中的正常存储指令完成的)。
这应该足以从概念上理解它是如何工作的,而不是自己为自定义OS实现它。正如Michael在前面评论的那样,西罗·桑蒂利对类似问题的回答有一些特定的代码来处理一些复杂的问题。
https://stackoverflow.com/questions/34516417
复制相似问题