4周前
[linux内存管理] 第033篇 深度解析 slab 内存池回收内存以及销毁全流程
copyright_author: bin的技术小屋 copyright_author_href:
1月前
[linux内存管理] 第032篇 使用trace32分析slab cache
以实际dump为例,文章用trace32深入解析了Linux slab cache的内部逻辑,带你逐层解读kmalloc-64实例中的数据结构,从kmalloc_caches和kmem_cache到per-CPU区与节点node的内存组织和管理特性。
1月前
[linux内存管理] 第031篇 内核启动早期的slab分配器的自举
梳理Linux内核启动早期内存管理的四个阶段,文章深入分析了slab分配器自举的“鸡生蛋”难题:分配器本身依赖尚未初始化的自身结构体。详细解读slab分配器如何通过静态变量及多层自举逻辑,巧妙解决这一循环依赖困境,进而实现对象级缓存的高效分配与初始化,为内核后续稳定运行打下坚实基础。
1月前
[linux内存管理] 第030篇 深入理解 slab cache 内存分配全链路实现
通过内核源码深入解析slab cache的内存分配机制,文章以task_struct为例详解fastpath和slowpath的分配流程,阐释了kmem_cache在多CPU和NUMA架构下的高效对象分配策略,以及如何通过本地CPU缓存、空闲对象链和慢速路径保证性能和并发安全。
2月前
[Android稳定性] 第060篇 [问题篇] storage corruption导致的死机
一台售后机器频繁重启,日志分析定位到kernel在同一代码处异常crash,且product分区未损坏。无论刷super单镜像还是整包软件,问题都复现,确认是存储损坏(storage corruption)导致。后续将通过UFS交叉验证和检测,进一步排查硬件问题,以寻找更深层次故障原因。
2月前
[Android稳定性] 第059篇 [问题篇] 内核内存区域重叠导致的页表映射错误
基线升级后引入高通baseline代码导致设备在重启时死机,问题定位至内核mtdoops_do_dump模块。通过dmesg日志和trace32调试发现,关键内存地址pte为空,导致系统在访问p_hdr结构时出现页表异常。分析详细还原故障场景,为后续修复提供技术依据,展示了系统性排查和调试过程的专业
[Android稳定性] 第059篇 [问题篇] 内核内存区域重叠导致的页表映射错误
查看完整文章 评论
2月前
内核分析利器crash的编译指南
crash是一款基于GDB、专为Linux内核崩溃转储文件分析而设计的开源工具,补足了GDB无法读取内核核心信息的不足。文章详解crash的手动编译安装流程,并重点介绍利用GitHub Action实现自动化编译和发布,极大简化部署环节,高效便捷,适合开发者快速上手与持续集成。
2月前
利用 Claude Code 探索 Linux 内核奥秘
Claude Code高效助力Linux内核学习,文章详细介绍其在Windows系统上的安装流程及环境变量设置,并对API KEY获取及费用问题给出第三方解决方案。通过配置和使用Claude-code-router,可灵活切换API服务,支持针对不同目录乃至全局的内核源码智能分析,大幅提升开发和学习
3月前
[Linux进程调度] 第002篇 Linux下0号进程的前世(init_task进程)今生(idle进程)
Linux下有三个特殊进程:idle(PID=0)、init(PID=1)和kthreadd(PID=2)。idle是系统首个进程,由静态定义的init_task演变而来,是唯一未通过fork/kernel_thread产生的进程,运行在内核态,每个处理器单元独立一个,负责系统空闲时执行节能循环。init由idle创建,完成初始化后进入用户空间,成为所有用户进程祖先,最终转为守护进程。kthreadd亦由idle创建,始终运行于内核空间,负责管理和调度所有内核线程,是其父进程。idle通过rest_init函数创建init和kthreadd后演变为idle,不参与调度,仅在运行队列为空时执行cpu_idle_loop。
4月前
【深入内核】理解Linux Static Keys和jump label机制
在Linux内核高频路径中,likely/unlikely宏帮助提升分支预测准确率,但随着判断增多,分支预测失败和cache压力导致性能瓶颈。为彻底消除分支带来的损耗,内核引入static keys和jump label机制,通过运行时动态替换代码段,实现零开销切换分支。