BSP 和 AP 的启动路径分离
/** Now that this CPU is running on its own stack, drop the realmode* protection. For the boot CPU the pointer is NULL!*/movq trampoline_lock(%rip), %raxtestq %rax, %raxjz .Lsetup_gdtmovl $0, (%rax)这段汇编代码是 Linux 内核启动流程中应用处理器AP解除对实模式代码保护的关键步骤确保其顺利进入保护模式。可以将代码拆解为三个核心逻辑部分并结合背景来理解。背景释放实模式锁在 x86 多核启动中所有 AP应用处理器在唤醒时最初都在实模式下运行。为了防止多个 CPU 同时争抢或破坏共享的实模式代码和数据trampoline内核使用了一个自旋锁spinlock来确保同一时刻只有一个 CPU 在执行这段代码。当 AP 成功切换到 64 位模式并拥有了自己的栈后它就需要释放这个锁以便唤醒下一个 AP 核心。这就是这段代码的最终目的。代码逻辑详解获取锁的地址movq trampoline_lock(%rip), %rax这行代码获取了名为trampoline_lock的锁变量的当前地址RIP-relative 寻址并存入%rax。检查锁是否有效testq %rax, %rax jz .Lsetup_gdttestq指令检查%rax是否为 0即NULL。如果%rax 0说明当前执行的是主 CPUBSP因为 BSP 是从 BIOS 直接启动的并不通过 trampoline 代码唤醒所以它没有持有这个锁直接跳转到.Lsetup_gdt继续执行。如果%rax ! 0则说明当前是 AP CPU需要执行释放锁的操作。释放锁movl $0, (%rax)这是释放锁的实际操作它将trampoline_lock指向的内存地址的值设置为0。这个动作会解除锁的保护并唤醒下一个在等待的 AP 核心。设计意图明确的职责分离这段代码体现了内核启动中一个重要的设计思路BSP 和 AP 的启动路径分离。BSP (Boot Strap Processor)在head_64.S中BSP 的入口会跳过锁释放的步骤直接进入 GDT 设置因为它从未占用过这个锁。AP (Application Processor)所有 AP 在secondary_startup_64中都会经过这段逻辑释放trampoline_lock确保唤醒机制的正确性和数据的一致性。trampoline_lock本身是一个在arch/x86/kernel/smpboot.c中定义的全局指针。这个设计确保了在复杂的多核启动过程中共享资源的访问是安全且有序的。

相关新闻

终极指南:3步快速解锁网易云音乐NCM文件,实现跨平台自由播放

终极指南:3步快速解锁网易云音乐NCM文件,实现跨平台自由播放

终极指南:3步快速解锁网易云音乐NCM文件,实现跨平台自由播放 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的歌…

2026/10/18 4:52:54 阅读更多 →
Gemini Gems向Skills迁移指南:从AI功能调用到可编程技能构建

Gemini Gems向Skills迁移指南:从AI功能调用到可编程技能构建

如果你最近在关注 Google 的 AI 开发工具,可能会注意到一个重要的产品线变动: Gemini Gems 将在今年十月正式退役,并全面转向名为 “Skills” 的新形态 。 这绝不仅仅是一个简单的功能改名。对于正在或计划使用 Gemini API 进行应用开发的…

2026/10/18 4:54:21 阅读更多 →
JavaScript防御性编程实战:从编码到监控的全链路防bug体系

JavaScript防御性编程实战:从编码到监控的全链路防bug体系

1. 项目概述:从一句“玄学”到一种“仪式感” 在程序员的世界里,尤其是前端开发领域,JavaScript 的调试和 bug 排查常常让人又爱又恨。爱的是它动态灵活,恨的也是它动态灵活带来的各种意想不到的运行时错误。于是,一种…

2026/10/17 14:57:58 阅读更多 →

最新新闻

MCP协议深度解析:从设计思路到实战落地,智能体工具集成不再难

MCP协议深度解析:从设计思路到实战落地,智能体工具集成不再难

1. 为什么这一讲值得单独拿出来精讲MCP,全称 Model Context Protocol,是近两年在智能体工程圈子里被反复讨论的一个协议规范。如果你正在做 AI 应用开发,尤其是涉及工具调用、多智能体协作、外部数据源接入这类场景,那 MCP 基本是…

2026/10/19 5:38:26 阅读更多 →
OpenClaw requireApproval 插件:生产环境 AI 代理的人工审批闸门

OpenClaw requireApproval 插件:生产环境 AI 代理的人工审批闸门

OpenClaw 跑得越顺,我心里反而越没底。这句话听起来有点反直觉,但凡是把 OpenClaw 从个人实验搬到团队生产环境的人,多半能对上这个感觉:代理的执行力越强,越没人敢给它在生产环境里完全放开手脚。OpenClaw v2026.3.28…

2026/10/19 5:38:26 阅读更多 →
Agent上下文管理选型:流水式与汉堡式架构对比及混合方案实践

Agent上下文管理选型:流水式与汉堡式架构对比及混合方案实践

1. 从一次上下文溢出事故说起去年冬天,我接手了一个内部知识库问答助手的调优工作。上线第一周就出了状况:用户连续追问七八轮之后,Agent 开始答非所问,甚至把三轮之前已经确认过的订单编号又当成新信息重新询问。日志里最扎眼的一…

2026/10/19 5:38:26 阅读更多 →
PSO-BiLSTM与SHAP可解释性分析:多步时序回归的完整实践

PSO-BiLSTM与SHAP可解释性分析:多步时序回归的完整实践

上个月我手头有一个多步超前回归需求:一段工业设备运行监测数据,十几个连续采集的变量,要用过去24个时刻的观测预报未来三个时刻的一项关键质量指标。业务方提出三个硬性要求——预报要准,模型结果要能解释“到底哪些变量在起作用…

2026/10/19 5:38:26 阅读更多 →
OpenClaw基础版扩展指南:理解skills机制与必备技能清单

OpenClaw基础版扩展指南:理解skills机制与必备技能清单

装完OpenClaw基础版的第一天,很多人都会对着终端界面发愣——程序确实起来了,也能对话了,但让它干点正事,比如整理个文件、抓个网页信息、定时提醒你开会,它却总是回一句"我没有这个能力"。这不奇怪。OpenCl…

2026/10/19 5:38:26 阅读更多 →
AI开发工程师面试全解析:从简历到系统设计的高频考点与备战方法

AI开发工程师面试全解析:从简历到系统设计的高频考点与备战方法

面试这件事,最微妙的地方在于:你以为你在展示自己,面试官却往往在60分钟内只做一件事——验证“如果把这个项目交点给我,我能放心吗”。作为一个面过别人、也被别人面过的AI开发工程师,我见过太多准备充分却答偏的候选…

2026/10/19 5:37:25 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →