当前位置: 首页 > news >正文

struct boot_params与memmap=的关系

struct boot_paramsmemmap=内核参数之间,是信息源头信息过滤器的关系。boot_params(特别是其核心的e820_table)提供了硬件报告的完整内存布局,而memmap=参数则允许在这个布局上添加一层来自用户的“覆盖规则”,用来修改内核最终采纳的内存视图。

这个关系类似于:boot_params是一张由BIOS/UEFI绘制好的“原始地图”,而memmap=是在这张地图上画出的“自定义红线”,内核最终的行动将遵循被红线修改过的地图。

信息源头:boot_params提供硬件视角

struct boot_params中的e820_table是内核了解物理内存布局最核心的数据来源。它由引导程序(如GRUB)在启动时根据固件信息填充,包含了系统完整的E820内存映射表,详细描述了每块内存区域的起始地址、大小和类型(如可用RAM、保留内存等)。这是内核最信任的硬件原始信息。

信息过滤器:memmap=注入用户视角

memmap=参数是内核启动命令行中的一个选项,允许在boot_params提供的原始地图上应用修改。它的核心作用就是覆盖或调整E820表所描述的内存区域。常见的用法包括:

  • 限制最大可用地址memmap=nn[KMG](不带偏移量)或mem=参数,会限制系统可以使用的最大物理地址,任何超出该限制的内存区域都会被内核移除。

  • 保留或指定特定区域:通过memmap=nn@ss等格式,可以将指定区域标记为保留或可用,这会影响内核的最终内存视图。

协同工作:用户规则覆盖硬件数据

在启动过程中,内核会按照以下流程协同处理这两者:

  1. 获取硬件数据:内核首先从boot_params中读取固件提供的E820表。

  2. 解析用户规则:内核解析命令行中的memmap=参数。

  3. 应用覆盖:内核根据memmap=的规则,对原始的E820表进行修改、删除或新增条目。

  4. 建立最终视图:基于修改后的内存表,内核构建其最终的内存管理视图(如初始化memblock分配器)。

一个更现代和稳健的做法是,当内存条数过多时(超过boot_params固定的128个E820表容量),引导程序或内核可以通过setup_data链表来传递扩展的内存映射信息,而不是依赖受限的命令行。这也从侧面体现了boot_params作为基础数据结构的核心地位。

http://www.cnnetsun.cn/news/4051050.html

相关文章:

  • 当你的问卷还在“拷问”受访者,聪明人已经在和AI“共创”了
  • 智能视频批量剪辑与矩阵分发系统实战解析
  • 耐高温硅酮密封胶,耐磨专业之选
  • Codex AI助手本地部署指南:从环境配置到API集成实战
  • Apex启动崩溃Fatal Error DXGI报错怎么办?0x887A0006解决方法
  • AI代码自我迭代实验:144轮循环后系统崩溃的启示
  • LeetCode算法面试的反思:从解题技巧到工程思维的转变
  • 玄奘路敦煌戈壁徒步108公里,四十届老赛事的底色
  • Python正则表达式实战:字符串精准清洗与字符类型提取指南
  • Unraid配置静态IP避坑指南:从169.254地址到稳定网络
  • Visual Studio属性表实战:告别重复配置,实现C++/C#开发环境一键复用
  • 别再把学术写作当“苦力活”了——aigcbiye正在重新定义这件事
  • 打造统一IDEA配置模板:基于阿里规范提升团队开发效率
  • 补铁剂与肠道舒适度有关吗?AIAF补铁剂的友好度科普
  • 嵌入式开发平台化设计:模块化车板与驱动抽象层实践
  • 基于ADP、ClawPro与ima构建自动化个人知识大脑:从信息抓取到智能检索的完整实践
  • 游戏设计中提示工程的实践与教训
  • ME4057 1A 锂电池充电管理芯片系列
  • Windows系统0xc000007b错误全解析:从运行库修复到Xshell启动故障排除
  • AWS S3、EBS、EFS 区别是什么?文件存储选错可能多花一半成本
  • Postman安装配置与API测试实战:从入门到精通
  • 【AI】本地大模型搭建-1 KoboldCpp
  • 2026论文神级降AIGC工具大曝光:智能算法直击安全阈值
  • 轻量级Kubernetes部署实战:k3s与Docker的融合方案
  • Cursor 改仓库权限第 2 天,Agent 把测试分支当成了生产——我的三层校验救场实录
  • 程序员为什么越来越离不开 AI?从代码调试到项目开发,真正拉开差距的是使用方式
  • OpenClaw开源机器人手:技术热度与市场认知的差距分析
  • PowerShell Core编码问题解决方案:从乱码到跨平台文本处理
  • 从OpenAI技术栈到实战:构建高可用AI服务后端架构详解
  • 基于SpringBoot的石材销售管理系统(源码+lw+部署文档+讲解等)