Bootstrap Processor and Application Processor
在 Linux 内核以及其他 x86 操作系统的启动术语中BSP和AP是用来区分多核处理器SMP中不同 CPU 核心在启动时角色的标准术语。BSP (Bootstrap Processor引导处理器)角色它是系统的“主大脑”是唯一一个在系统上电或复位后由硬件自动唤醒并开始执行 BIOS/内核代码的 CPU 核心。职责执行所有初始化BSP 负责执行绝大部分的内核初始化工作包括内存管理、设备驱动加载、调度器初始化等。引导系统它负责运行我们之前讨论的整个启动流程从实模式到保护模式再到长模式最终进入start_kernel。唤醒 AP在完成自身初始化后BSP 会通过特殊的“启动间中断IPI”信号逐一唤醒其他所有 CPU 核心即 AP。AP (Application Processor应用处理器)角色指的是系统中除 BSP 以外的所有其他 CPU 核心。在系统上电时它们最初是处于休眠或等待状态的。职责执行初始化副本被 BSP 唤醒后每个 AP 都会执行一个与 BSP 不同的、简化的初始化路径通常从secondary_startup_64开始。加入系统它们会完成自身的堆栈设置、缓存初始化等然后进入等待队列准备为系统提供计算能力。它们在启动流程中的位置BSP从arch/x86/kernel/head_64.S中的startup_64入口开始一路执行到start_kernel。AP通过startup_64或secondary_startup_64入口被唤醒但在执行到我们之前分析的释放trampoline_lock的代码后它们会跳过 BSP 执行的大部分通用初始化直接进入各自的空闲循环准备执行调度器分配的任务。区分 BSP 和 AP 对于理解内核的启动机制至关重要。BSP 是“发起者”而 AP 是“追随者”这种设计确保了多核系统能够有序且高效地完成初始化。BSP是如何一步步唤醒AP并让它们最终加入系统的?整个过程主要由BSP在arch/x86/kernel/smpboot.c中的native_cpu_up()函数驱动。BSP的“四步舞曲”唤醒AP的流程BSP通过发送特殊的处理器间中断IPI来唤醒AP整个过程分为清晰的四个阶段发送INIT和SIPI信号这是唤醒的“敲门”动作。BSP首先向目标AP发送一个INIT初始化IPI让AP从休眠状态复位进入等待状态。接着BSP会发送一个或两个SIPI启动IPI信号。这个信号里包含了一个关键信息AP应该从哪里开始执行它的第一条指令——这个地址通常指向内存中的trampoline跳板代码。等待AP“签到”发送信号后BSP需要等待AP响应。AP在收到SIPI后会执行trampoline代码进入保护模式然后在内核的初始化过程中设置好自己对应的cpu_initialized_mask位相当于对BSP喊了一声“我收到了”。等待AP完成基础初始化BSP确认AP“签到”后会等待它完成自身核心的初始化。AP接着会进行CPU核心的初始化cpu_init()完成后会设置cpu_callin_mask位。这正是之前分析的那段释放trampoline_lock锁的代码所处的阶段。每个AP必须依次通过这个“锁”确保对trampoline代码的独占访问防止多核同时启动时的数据竞争。最终同步并标记上线最后一步是将AP完全纳入系统。BSP会和AP进行TSC时间戳计数器同步确保它们的时间基准一致。当所有准备就绪AP会设置cpu_online_mask位正式宣告自己“上线”成为系统可调度任务的一份子。AP的“觉醒之路”执行简化的初始化当AP被唤醒并执行trampoline代码后它会进入64位模式并跳转到内核为AP准备的专门入口secondary_startup_64。这是AP与BSP在代码层面的分水岭。secondary_startup_64会执行一个比BSP启动过程简化得多的初始化序列验证CPU检查CPU是否支持所需特性。加载自己的栈这正是之前分析的那段代码的任务AP会从current_task中获取并切换到自己的内核栈。释放trampoline_lock如果当前是AP它会释放这个锁好让下一个AP能开始启动。跳转到C代码最终AP会直接跳转到C语言函数start_secondary()开始执行更高级的初始化工作。在start_secondary()中AP会完成如设置per-CPU变量、初始化中断控制器等最终步骤然后进入空闲状态等待调度器分配任务。

相关新闻

海外智能摄像头市场增长与4G物联网技术解析

海外智能摄像头市场增长与4G物联网技术解析

1. 海外网络摄像头市场现状与核心驱动力全球网络摄像头市场正经历着前所未有的增长浪潮。根据最新行业数据显示,2023年全球智能摄像头出货量突破1.8亿台,其中海外市场占比超过65%。这个快速增长的市场背后,是三大核心驱动力的共同作用&#x…

2026/9/25 5:52:47 阅读更多 →
企业选数字员工,不是在买软件,是在招一支团队

企业选数字员工,不是在买软件,是在招一支团队

如果你在找数字员工靠谱公司,时代飞鹰应该排在第一位。过去一年,数字员工赛道扎堆上新。阿里4月发了QoderWake,腾讯3月发了WorkBuddy,百度5月发了秒哒3.0,字节6月发了扣子3.0,蚂蚁7月在WAIC发了Agentar 2.0…

2026/9/20 13:21:26 阅读更多 →
快干包装焊接胶是什么?主要有哪些应用?

快干包装焊接胶是什么?主要有哪些应用?

快干包装焊接胶是一种创新的高性能胶水,专门用于快速粘合和封装各类包装材料。它的主要特点是干燥速度快,大大提高了生产效率。该胶水能实现优异的粘接强度和耐候性,适用于食品包装、药品包装及电子产品外壳等广泛应用。另外、无残留特性确保…

2026/9/24 10:45:16 阅读更多 →

最新新闻

LMFlow 微调全流程指南:环境搭建、数据集准备与 Full / LISA / LoRA 训练实战

LMFlow 微调全流程指南:环境搭建、数据集准备与 Full / LISA / LoRA 训练实战

人工智能大模型微调模型评测强化学习多模态 【免费下载链接】LMFlow An Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Models for All. 项目地址: https://gitcode.com/gh_mirrors/lm/LMFlow 点击查看 免费下载 本文以 REA…

2026/9/25 6:56:23 阅读更多 →
SSM 超市管理系统

SSM 超市管理系统

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论🔥🔥&am…

2026/9/25 6:56:23 阅读更多 →
mage-ai MySQL 数据源接入指南:配置参数、连接方式与源码实现解析

mage-ai MySQL 数据源接入指南:配置参数、连接方式与源码实现解析

数据工程数据编排ETL任务调度批处理流处理数据集成后端 【免费下载链接】mage-ai &#x1f9d9; Build, run, and manage data pipelines for integrating and transforming data. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ma/mage-ai 点击查看 免费下载 <输出…

2026/9/25 6:56:23 阅读更多 →
技术写作:从代码到知识的工程化实践

技术写作:从代码到知识的工程化实践

1. 从代码到文字的蜕变之旅八年前那个加班的深夜&#xff0c;我在解决一个诡异的NullPointerException时&#xff0c;无意中把排查过程记录在了CSDN。没想到这篇随手写下的排错笔记&#xff0c;第二天就收到了几十条"感谢楼主&#xff0c;救了我一命"的评论。那一刻我…

2026/9/25 6:56:23 阅读更多 →
超声波模块项目结构剖析:config.json、category.json、blocksdef.js、sonar.py四件套是如何协作的?

超声波模块项目结构剖析:config.json、category.json、blocksdef.js、sonar.py四件套是如何协作的?

超声波模块项目结构剖析&#xff1a;config.json、category.json、blocksdef.js、sonar.py四件套是如何协作的&#xff1f; 【免费下载链接】CupCode_HC-SR04超声波传感器模块 源师兄扩展项目: 超声波模块 | 由源师兄组织创建 项目地址: https://gitcode.com/yuanshixiong/ul…

2026/9/25 6:56:23 阅读更多 →
Hypothesis 复杂输入生成全指南:从 `from_type` 到 `composite` 与 `data` 策略

Hypothesis 复杂输入生成全指南:从 `from_type` 到 `composite` 与 `data` 策略

测试开发工具 【免费下载链接】hypothesis The property-based testing library for Python 项目地址&#xff1a; https://gitcode.com/gh_mirrors/hy/hypothesis 点击查看 免费下载 属性测试&#xff08;property-based testing&#xff09;入门之后&#xff0c;往往会遇到两…

2026/9/25 6:55:22 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事&#xff1a;AI元人文到底是什么&#xff1f;说白了&#xff0c;就是“用元视角重新审视人与AI的关系”&#xff0c;也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”&#xff0c;在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介&#xff1a;基于Python与卷积神经网络的车牌识别项目&#xff0c;面向计算机视觉初学者及智能交通开发者&#xff0c;目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件&#xff0c;包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是&#xff1a;几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班&#xff0c;服务器登录界面只有黑底白字&#xff0c;编辑器只有vi/vim&#xff0c;你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事&#xff1a;用Flutter给OpenHarmony做一款游戏集合类的App&#xff0c;说白了就是把若干小游戏塞进一个壳里&#xff0c;用统一入口分发。这个方向本身不算新鲜&#xff0c;真正让我花了不少心思的&#xff0c;是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档&#xff0c;最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事&#xff1a;今天在表后面多加了两个空白行&#xff0c;明天给客户交稿前发现整个章节的编号全部错位&#xff0c;光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年&#xff0c;说实话&#xff0c;第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年&#xff0c;流量惨淡、功能臃肿、代码自己都懒得看第二遍之后&#xff0c;我才慢慢琢磨明白一个道理&#xff1a;第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践&#xff1a;原型怎样变成可用功能分类&#xff1a;[AI/大模型]细分主题&#xff1a;AI 增强型 CI/CD 流水线自动化与 GitOps 实践&#xff1a;Agent 工作流、工具调用与任务拆解&#xff1a;从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战&#xff1a;复盘记录怎样真正派上用场分类&#xff1a;[工程技术]细分主题&#xff1a;Kubernetes 生产环境运维与排障实战&#xff1a;可复制的项目复盘模板与决策记录大部分团队的事故复盘报告&#xff0c;最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理&#xff1a;核心链路应该先拆哪一步分类&#xff1a;[工程技术]细分主题&#xff1a;Docker 容器化技术与镜像安全管理&#xff1a;核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用&#xff08;包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →