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

init execmem_arch_setup

发布时间:2026/9/27 1:25:39 来源:云帆数科 栏目:资讯中心
init execmem_arch_setup
execmem_arch_setup()是 Linux 内核中用于为可执行内存分配如内核模块、BPF JIT、ftrace、kprobes定义架构相关地址范围和权限的初始化钩子。核心作用定义“可执行内存”的分配规则它属于execmem子系统可执行内存分配器的一部分。该子系统的目标是将可执行内存的分配从模块加载器中解耦让 BPF、kprobes、ftrace 等子系统不再依赖CONFIG_MODULES同时允许不同架构定义各自的内存范围、权限和约束。execmem_arch_setup()由架构实现返回一个填充好的struct execmem_info告诉通用的execmem核心哪些地址范围可以用于分配可执行代码以及用什么页保护属性pgprot和地址对齐要求。x86 架构下的典型实现在 x86 上该函数的核心逻辑是地址范围根据kaslr_enabled()决定起始地址。如果启用了 KASLR会在MODULES_VADDR基础上加一个随机偏移get_random_u32_inclusive(1, 1024) * PAGE_SIZE以增加安全性。填充execmem_info将计算好的start和固定的endMODULES_END填入EXECMEM_DEFAULT范围并设置pgprot PAGE_KERNEL、alignment MODULE_ALIGN同时标记EXECMEM_KASAN_SHADOW标志。调用时机execmem_arch_setup()不是直接被 x86 的初始化代码调用的。它是由通用的execmem核心在execmem_init()中调用的void __init execmem_init(void) { struct execmem_info *info execmem_arch_setup(); // ... 验证并保存 info }而execmem_init()通常是一个core_initcall在启动流程中较早执行。对于 x86 这类可能需要极早分配可执行内存的架构它还会被特殊处理以确保在 ftrace 等子系统需要分配代码内存之前就完成初始化。与内存管理有关系execmem_arch_setup()与内存管理有非常紧密的关系。它本身就是内存管理子系统的一部分专门负责可执行内存Executable Memory这一特殊领域的地址空间规划。关系体现在三个层面1. 它管理的是虚拟地址空间的一部分execmem_arch_setup()返回的struct execmem_info中最核心的字段就是start和end——它们定义了可执行内存可以使用的虚拟地址范围。在 x86 上这个范围就是MODULES_VADDR到MODULES_END之间的模块区域。这本质上是在内核虚拟地址空间布局中为“可执行代码”划出一块专属的“地盘”。2. 它依赖内存管理的页表机制它返回的pgprot字段通常是PAGE_KERNEL会直接用于建立页表映射。execmem分配器在拿到这块内存后需要通过vmap等机制将其映射到内核虚拟地址空间并设置正确的页表权限可读、可写、可执行。这完全依赖于内存管理的页表操作。3. 它与 KASAN 影子内存有交互x86 的实现中标记了EXECMEM_KASAN_SHADOW标志。这意味着execmem分配器在分配内存时需要额外考虑 KASAN 影子内存的映射。当可执行内存被分配后KASAN 的影子内存也需要同步更新以确保对这块内存的访问不会误报。这直接涉及内存管理中的影子内存机制。为什么单独设计传统上可执行内存的分配如内核模块加载是耦合在模块加载器中的。但 BPF JIT、ftrace、kprobes 等子系统也需要分配可执行内存却不一定依赖CONFIG_MODULES。execmem子系统的设计目标就是将可执行内存的分配从模块加载器中解耦让所有需要可执行内存的子系统都能使用统一的分配器。而execmem_arch_setup()就是架构层面对这个分配器的“配置入口”——它告诉内存管理子系统这块地址空间可以用来放可执行代码请按这个权限和对齐要求来管理它。所以是内存管理在可执行代码领域的专门延伸。

相关推荐

微信小程序跳转小程序完整指南:API、配置与审核避坑
微信小程序跳转小程序完整指南:API、配置与审核避坑

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

FaceNet+PyQt本科生人脸识别考勤系统实战
FaceNet+PyQt本科生人脸识别考勤系统实战

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

连年涨价还被全球巨头把产能抢到四年后,这家代工厂到底有多狠
连年涨价还被全球巨头把产能抢到四年后,这家代工厂到底有多狠

连年涨价还被全球巨头把产能抢到四年后,这家代工厂到底有多狠 做生意的常识是,商品一旦涨价,买家多少会犹豫,甚至转头去找别家。 可是在全球高端芯片制造这门生意里,这条常识完全失灵了。2026年9月下旬,台湾… · 2026/9/27 1:25:33

SSS1700C1芯片详解:USB转IIS/I2C免驱方案的多种玩法
SSS1700C1芯片详解:USB转IIS/I2C免驱方案的多种玩法

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

基本初等函数图像与性质全梳理:六大函数一图搞定
基本初等函数图像与性质全梳理:六大函数一图搞定

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

翻译成英文后论文AI率高,怎样用免费工具降AI又不改原意?
翻译成英文后论文AI率高,怎样用免费工具降AI又不改原意?

翻译成英文后论文AI率高,怎样用免费工具降AI又不改原意? 中文稿意思清楚,翻成英文后检测提示高疑似,再次润色又把可能相关改成直接导致。此时最重要的不是马上生成第三个版本,而是让英文忠实表达中文里的事实和判断&a… · 2026/9/27 2:13:03

Agent Runtime 是什么?从一次资料整理任务看 AI Agent 如何真正执行工作
Agent Runtime 是什么?从一次资料整理任务看 AI Agent 如何真正执行工作

把一份几十页的报告交给 AI,让它整理成文章提纲,看起来只需要一句话。 真正动手时,你可能会遇到这些问题:文件没读完整,摘要漏掉重要章节,引用找不到出处,中途执行失败后又要重新开始。如果还要… · 2026/9/27 2:13:03

Python机器学习算法实战:从数据到预测的完整实现与避坑指南
Python机器学习算法实战:从数据到预测的完整实现与避坑指南

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

新注册公司怎么做网站速查手册
新注册公司怎么做网站速查手册

新注册公司怎么做网站避开低价陷阱的5条最佳实践 刚注册完公司,手里攥着几千块预算,想在三个月内把官网立起来?别急着在百度上搜“网站建设多少钱”,你大概率会看到一堆“99元建站”、“299元高端商城”的广告。我干了十年这行,见过太多老板为了省… · 2026/9/27 2:12:39

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

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

企业微信二维码