2026-01-19
[linux内存管理] 第035篇 vmalloc详解
内核启动的内存初始化分为Fixmap、线性映射、Buddy分配器和Slab分配器四大阶段,逐步实现高效的物理与虚拟内存管理。vmalloc通过vmap机制,将非连续物理内存映射为连续虚拟地址,极大提升内存分配灵活性。文中详解vmalloc区域管理与关键数据结构,介绍空闲及已分配管理策略,并列举常用分配释放API,并解释代码流程
2026-01-13
Linux aarch64 中断处理全流程分析
深入解析了Linux中断系统的核心概念,包括硬件中断号(hwirq)与虚拟中断号(virq)的区别、各类中断号在中断控制器中的分配和映射关系,以及物理与逻辑中断线的实际意义。强调Linux内核通过virq实现统一管理,解决硬件中断号冲突,展示了复杂中断结构在SoC中的连接方式,为开发者理解和排查多级中断控制器的中断流程问题提供理论知识的指导。
2026-01-08
华为充电管理架构概览
深入剖析华为Mate X5充电管理源码,从软件架构、目录组织到核心模块如电池与充电器管理,亮点涵盖充电模式协商、事件驱动通信、参数投票决策等机制。文章详细展现了多电池支持、故障安全保护、硬件抽象接口与充电流程,对华为Linux内核电源管理体系结构及流程进行了系统性解读,为技术研究和实践提供重要参考。
2026-01-08
【深入内核】中断真的不能睡眠吗?
“中断上下文不能睡眠”是Linux内核开发的底层铁律,源于中断执行期间CPU未切换进程,无法被调度器感知和管理。文章通过深入解析CPU执行模型、调度机制以及arm64中断流程,阐明中断上下文不具备调度实体特征、没有task_struct、不能被调度,也无法安全使用睡眠相关API和某些锁。
2025-12-24
[BPF] 第001篇 使用 eBPF 监控 Linux 内核内存分配
深入探索eBPF技术,该方案通过非侵入式方式在Linux内核中高效运行自定义字节码,实现对kmalloc内存分配的实时监控,兼具安全性和灵活性。文章详细展示了内核态插桩与用户态应用的协同原理与代码实践,支持多维过滤和实用输出,适合于系统性能分析及生产环境部署,为内核行为追踪和资源优化提供了极具价值的案例
2025-12-16
[linux内存管理] 第034篇 slab内存分配器之kmalloc全面详解
深入解析Linux内核中kmalloc的内存池体系,详解其在高效分配小至中等连续物理内存块中的核心作用。文章重点说明kmalloc通过预先创建多种尺寸的slab内存池,有效应对频繁的通用及专属内存分配需求,并结合源码分析创建流程、类型划分及对应场景,帮助开发者理解内核内存分配机制的高效性与灵活性。
2025-12-16
[linux内存管理] 第033篇 深度解析 slab 内存池回收内存以及销毁全流程
copyright_author: bin的技术小屋 copyright_author_href:
2025-12-11
[linux内存管理] 第032篇 使用trace32分析slab cache
以实际dump为例,文章用trace32深入解析了Linux slab cache的内部逻辑,带你逐层解读kmalloc-64实例中的数据结构,从kmalloc_caches和kmem_cache到per-CPU区与节点node的内存组织和管理特性。
2025-12-09
[linux内存管理] 第031篇 内核启动早期的slab分配器的自举
梳理Linux内核启动早期内存管理的四个阶段,文章深入分析了slab分配器自举的“鸡生蛋”难题:分配器本身依赖尚未初始化的自身结构体。详细解读slab分配器如何通过静态变量及多层自举逻辑,巧妙解决这一循环依赖困境,进而实现对象级缓存的高效分配与初始化,为内核后续稳定运行打下坚实基础。