首页/新闻资讯/正文详情

【译】《心悟内核:先懂设计,再读代码》—24、内核模块如何互相感知:仅能通过导出符号_FINISH

发布时间:2026/11/4 6:52:28 来源:云帆数科 栏目:资讯中心
【译】《心悟内核:先懂设计,再读代码》—24、内核模块如何互相感知:仅能通过导出符号_FINISH
作者Moon Hee Lee原文 The Kernel in the Mind内核模块如何互相感知仅能通过导出符号内核模块是独立编译的内核功能单元设计为可在运行时加载。模块提供了一种扩展内核的灵活方式 —— 通常用于设备驱动、文件系统、密码学例程或协议实现无需完整重新编译内核或重启系统。一旦插入模块就成为运行中内核的一部分运行在特权空间可完整访问内核环境。尽管拥有这样的访问权限内核模块在设计上是相互隔离的。除非内核函数或变量被显式导出否则模块无法引用或调用它们。内核不提供自动发现、后期绑定或符号查找机制。所有交互都必须通过由EXPORT_SYMBOL或EXPORT_SYMBOL_GPL声明的预定义接口完成。该边界是有意设计的。内核不保证稳定的内部 ABI并且仅对导出接口提供支持。任何未显式导出的符号都视为内部符号在不同版本间可能发生变更或被移除。导出接口构成模块与内核其余部分之间唯一受支持的边界。加载模块时模块内的未定义符号会与全局符号表进行匹配该符号表仅包含内核选择对外暴露的标识符。如果缺少所需符号模块加载失败。符号解析仅发生一次 —— 在加载阶段无法动态调整。模块不能访问彼此的内部符号除非这些符号被显式导出。无论模块是否联合开发、是否在同一配置下编译、或是存放于相关源码目录都没有区别。没有EXPORT_SYMBOL符号就是不可见的。从模块视角来看未导出的符号等同于不存在。模块分层与堆叠十分常见但必须严格显式定义。一个模块可以依赖另一个模块注册回调、提供处理程序表或暴露工具函数 —— 但只能通过导出符号和已建立的注册点。不存在运行时自动发现与连接。这并非技术限制而是刻意的架构决策。内核强制执行这种隔离以保留内部灵活性、版本无关性以及系统完整性。task_struct、cred、mm_struct这类核心结构体是内核行为的关键除非通过安全接口有意对外暴露否则永远不能直接访问。无论模块与内核功能结合得多紧密每个模块都被当作外部代码。模块必须声明许可证提前解析依赖并且访问范围仅限于内核显式选择暴露的接口。内核模块只能通过导出符号感知彼此没有例外。这不是约定而是强制实施的设计精确、有意对 Linux 内核的长期稳定至关重要。如本文对你有些许帮助欢迎大佬支持我一下点赞收藏关注、关注公众号等您的支持是我持续创作的竭动力支持我的方式

相关推荐

投机解码与知识蒸馏:把 70B 的脑子塞进 7B 的速度,且不丢精度
投机解码与知识蒸馏:把 70B 的脑子塞进 7B 的速度,且不丢精度

投机解码与知识蒸馏:把 70B 的脑子塞进 7B 的速度,且不丢精度 本文先讲清自回归解码为什么是延迟瓶颈,再用一次并行验证把投机解码(speculative decoding)的无损性数学保证推到底。接着分析 draft 模型选型、知识蒸馏&… · 2026/11/4 6:52:28

Pi-Bolt工作原理全解:AOT编译、预建静态堆与代码镜像让启动快10倍的完整流水线
Pi-Bolt工作原理全解:AOT编译、预建静态堆与代码镜像让启动快10倍的完整流水线

【免费下载链接】Pi-Bolt ⚡ Pi, the coding agent, compiled ahead of time to one native executable. 10 faster to start, 7 less CPU and 4.5 less memory than Pi on Node. Linux, macOS, Windows, ARM64 and Android (Termux). 项目地址: https://gitcode.co… · 2026/11/4 6:51:28

XHS-Downloader:把小红书图文、视频下载到本地
XHS-Downloader:把小红书图文、视频下载到本地

XHS-Downloader:把小红书图文、视频下载到本地 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader XHS-Downloader 是一个开源的小红书… · 2026/11/4 6:51:28

LunaTranslator 完整指南:从 HOOK 到 OCR,掌握视觉小说游戏翻译
LunaTranslator 完整指南:从 HOOK 到 OCR,掌握视觉小说游戏翻译

LunaTranslator 完整指南:从 HOOK 到 OCR,掌握视觉小说游戏翻译 【免费下载链接】LunaTranslator 视觉小说翻译器 / Visual Novel Translator 项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator LunaTranslator 是一款免费开源、… · 2026/11/4 11:50:37

如何用自有ROM构建多语言Emerald 3DS:西班牙语、法语与意大利语版本构建教程
如何用自有ROM构建多语言Emerald 3DS:西班牙语、法语与意大利语版本构建教程

【免费下载链接】emerald-3ds Native Pokmon Emerald port for Nintendo 3DS, featuring dual-screen gameplay, stereoscopic 3D, and a fully 3D world. 项目地址: https://gitcode.com/gh_mirrors/em/emerald-3ds 点击查看 免费下载 Emerald 3DS 是《宝可梦 红宝… · 2026/11/4 11:50:37

蔡司三坐标测量仪是什么?一文读懂原理、型号、精度与行业应用
蔡司三坐标测量仪是什么?一文读懂原理、型号、精度与行业应用

蔡司三坐标测量仪是什么?简单说,三坐标测量机(CMM,Coordinate Measuring Machine)就是一台能在三维空间里 "量尺寸" 的设备:测头沿着 X、Y、Z 三个方向移动,逐点或连续扫过工件表面&a… · 2026/11/4 11:49:36

Xoodyak算法的各种密码分析方法全面盘点
Xoodyak算法的各种密码分析方法全面盘点

Xoodyak算法的各种密码分析方法全面盘点Xoodyak作为NIST轻量级密码竞赛的决赛算法,其安全性受到了学界的广泛审查。目前,所有已发表的攻击都针对缩减轮数的版本,其完整的12轮核心置换Xoodoo尚未被任何攻击所突破。以下是根据现有研究&#xf… · 2026/11/4 11:49:36

【LLM】第五章:LangChain框架介绍+开发前的准备工作
【LLM】第五章:LangChain框架介绍+开发前的准备工作

【LLM】第五章:LangChain框架介绍开发前的准备工作 本系列开始循序渐进讲LangChain框架。 LangChain是当前构建生产级AI智能体系统的首选,学习LangChain框架的意义不仅仅是开发智能体,透过框架,我们可以看到设计框架的这群牛人&… · 2026/11/4 11:49:36

CBC-MAC算法的各种密码分析方法全面盘点
CBC-MAC算法的各种密码分析方法全面盘点

CBC-MAC算法的各种密码分析方法全面盘点CBC-MAC(Cipher Block Chaining Message Authentication Code)是一种基于分组密码构造消息认证码的经典算法-。虽然设计精巧,但在不同条件下存在多种密码分析方法。以下是针对CBC-MAC及其主要变体的攻击… · 2026/11/4 11:49:36

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码