云栖梦泽
林渡
Blog
  • 首页
  • 开始浏览
    • 人世间
      • 世间风声
      • 人间烟火
    • 壹句话
    • 山中功课
      • LRDP2
      • Linux内核
      • 灵感风暴
      • 技术分享
      • ARM体系架构
      • Linux内存管理
      • Android稳定性
    • 云外光影
      • 动物与植物
      • 美食
      • 生活气息
      • 人物
    • 文章归档
      • 技术分享
      • 视频类型
      • 音频类型
      • 图文类型
      • 图片类型
  • 专题
    • 众星
    • 豆瓣
    • 足迹
    • 走心评论
    • 林渡的网盘
  • 留言板
  • 关于
    • 关于我
    • 一些声明
      • 站点声明
      • 隐私政策
    • 网站统计
  • 欢迎订阅!

欢迎来到云栖梦泽,为您导读全站动态
  • Melokc 4小时前留言 笑死我了哈哈哈哈
  • 小莫爱学习 1日前留言 我自己之前看过小米的电池管理驱动,跟华为的实现还是有不少差别。华为这边多电池和快充协议兼容做得更细致,学到了不少。
  • 张三不是三 2日前留言 作为入门参考很不错,尤其是配图和流程梳理,适合像我这样的初学者。就是有些专有名词能不能再详细解释一下,比如投票机制里的FCC和ICL新手可能不太懂。
  • 廖先生 2日前留言 找到拉,这么快,不愧是大佬。👍
  • 林渡 2日前留言 我在页面右上角增加了一个搜索的图标
  • 林渡 2日前留言 我在右上角同步增加了一个搜索的按钮,可以不用打开面板搜索了
  • 廖先生 2日前留言 赞,真高级
  • 林渡 2日前留言 右上角第一个图标打开全站面板,面板的右上角有一个搜索框
  • 廖先生 2日前留言 终于找到了,老板可不可以弄个搜索栏🤣
  • 智能助手 3日前留言

    你好!很高兴为你服务。如果你有任何关于华为充电管理技术的问题,或者需要进一步解释文章中的内容,请随时告诉我。我会尽力提供简洁友好的回复。
    --🤖 AI 自动回复

2025 年 12 月
日一二三四五六
123456
78910111213
14151617181920
21222324252627
28293031
« 11 月   1 月 »
最近文章
  • 2026-01-13 Linux aarch64 中断处理全流程分析
  • 2026-01-08 华为充电管理架构概览
  • 2026-01-08 【深入内核】中断真的不能睡眠吗?
  • 2025-12-30 [灵感风暴] 第002篇 高通平台增强型watchdog
  • 2025-12-24 [BPF] 第001篇 使用 eBPF 监控 Linux 内核内存分配
  • 2025-12-23 [灵感风暴] 第001篇 Charger Property Engine 设计方案
  • 2025-12-17 站在2025的尾巴上:回顾、感恩与前行
  • 2025-12-16 [linux内存管理] 第034篇 slab内存分配器之kmalloc全面详解
热门文章
  • 2025-07-21 高通以及MTK平台内核单独编译ko的原理
  • 2025-06-06 高通平台xbl启动流程补充
  • 2024-11-22 高通android启动代码流程分析(SBL->ABL)
  • 2025-08-27 [Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区
  • 2025-06-18 [linux内存管理] 第027篇 Linux ARM64 虚拟地址布局
  • 2025-06-09 【深入内核】linux ftrace详解
  • 2025-06-25 [Android稳定性] 第052篇 [方法篇] HMI项目中如何使用QCAP解析minidump?
  • 2024-12-15 [Android稳定性] 第000篇 Android稳定性系列开篇
热门标签
  • 内核线程 1
  • 价值观 1
  • 内核开发 2
  • 生产力工具 1
  • Linux内核 8
  • init进程 1
  • 理想与现实 1
  • 人生态度 1
  • 人生意义 1
  • 精神追求 1
  • 性能优化 1
  • 生活美学 1
  • 内核栈 1
  • 任务优先级 0
  • 反思 1
  • 个人成长 1
  • 时间管理 1
  • 自我认知 1
  • 烟火气 1
  • 任务管理 1
  • Static Keys 1
  • 进程调度 1
  • 动态分支 1
  • 寄存器 1
  • idle进程 1
  • 高效工作 1
  • 页面管理 1
  • minidump 3
  • kmalloc 2
  • kasan 2
  • dtc 1
  • 内存规整 1
  • setup_arch 1
  • 进程栈 2
  • mtdoops 1
  • QFIL 1
  • memory 3
  • git 1
  • 编译器优化 1
  • buddy 3
  • memblock 4
  • LDO 1
  • 虚拟地址 2
  • ACK 1
  • ANR 0
  • arm64 2
  • crash 5
  • 内存管理 6
  • hang 1
  • vercel 1
23487° 160 12 166
当您评论及浏览文章且浏览器未禁止COOKIE时,会为您显示最近10条回复及前8篇文章的浏览记录。
日期: 2025 年 12 月 11 日

2025 年 12 月 11 日1篇

[linux内存管理] 第032篇 使用trace32分析slab cache 1月前 评论 林渡
    Android稳定性
    slabtrace32
[linux内存管理] 第032篇 使用trace32分析slab cache

以实际dump为例,文章用trace32深入解析了Linux slab cache的内部逻辑,带你逐层解读kmalloc-64实例中的数据结构,从kmalloc_caches和kmem_cache到per-CPU区与节点node的内存组织和管理特性。

今天是云栖梦泽·

2024-11-11

随机阅读「linux源码解析06–常用内存分配函数kmalloc、vmalloc、malloc和mmap实现原理」
阅读 您好!这是一份关于内存分配函数的总结,涵盖了 kmalloc、vmalloc、malloc 和 mmap 函数。 **1. kmalloc 函数** - 基于 slab 分配器实现,分配的内存物理上连续。 - 分配流程: - 检查大小是否超过 KMALLOC_MAX_CACHE_SIZE,若超过,调用 kmalloc_large。 - 计算使用的 slab 缓冲区索引。 - 调用 kmem_cache_alloc_trace 从 slab 分配内存。 **2. vmalloc 函数** - 临时在 vmalloc 内存区申请 vma,并分配物理页面,建立映射。 - 适合分配较大内存,物理内存不一定连续。 **3. malloc 函数** - C 库实现,维护缓存,内存不足时通过系统调用 brk 向内核申请。 - 分配流程: - 从 C 库缓存分配或通过 brk 系统调用向内核申请。 - 若设置 VM_LOCKED 标志,立即分配物理页面并建立映射;否则,延迟分配。 - 访问未映射的虚拟空间时触发缺页异常,分配物理页面并建立映射。 **4. mmap 函数** - 用于用户程序分配内存、读写大文件、链接动态库、多进程内存共享等。 - 映射类型: - 私有匿名映射:fd=-1, flags=MAP_ANONYMOUS|MAP_PRIVATE - 共享匿名映射:fd=-1, flags=MAP_ANONYMOUS|MAP_SHARED - 私有文件映射:flags=MAP_PRIVATE - 共享文件映射:flags=MAP_SHARED - 分配流程: - 创建 vma 结构体。 - 根据文件关联性和映射区域属性,调用相应的映射函数。 - 建立虚拟地址到物理地址的映射。 - 默认情况下,mmap 只建立 vma,未分配物理页面,访问时触发缺页异常。 **总结** - kmalloc 和 vmalloc 适合分配内存,malloc 和 mmap 适合分配虚拟地址空间。 - 访问未映射的虚拟空间时,会触发缺页异常,内核会分配物理页面并建立映射。 - mmap 的重复映射和文件打开过多会导致性能问题。
壹行随十人
  • 轻雅阁
  • 菲兹克斯喵
  • 风记星辰
  • 问心斋
  • 迷鹿屋
  • 秘柯絮语
  • 星风之痕
  • 世上云川
  • 南方嘉木
  • 山海运维
云栖梦泽版权所有 · 架构于Halo及为您增强体验的THYUU/星度主题
苏ICP备2025185582号-1 苏ICP备2025185582号-1 苏公网安备32060102321049号 苏公网安备32060102321049号 BlogsClub BlogsClub 笔墨迹 笔墨迹
总访问量:| 访客人数: