首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多核处理器的80x86汇编语言

基于多核处理器的80x86汇编语言
EN

Stack Overflow用户
提问于 2015-12-29 18:00:11
回答 1查看 220关注 0票数 0

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

操作系统内核是如何启用多核执行的?(完成此操作的组装代码是什么?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-29 20:56:09

根据MP规范

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

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

可能更有用的是,从编程的角度来看,高级可编程中断控制器(,APIC )将一个中断发送到其他内核以唤醒它们。ACPI表提供了必要的信息来准确地决定该做什么。(感谢Ridge的澄清:这是用MMIO空间中的正常存储指令完成的)。

这应该足以从概念上理解它是如何工作的,而不是自己为自定义OS实现它。正如Michael在前面评论的那样,西罗·桑蒂利对类似问题的回答有一些特定的代码来处理一些复杂的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34516417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档