[linux内存管理] 第042篇 Linux内核Page Cache机制深入分析 3日前 1 条
[linux内存管理] 第042篇 Linux内核Page Cache机制深入分析

Page Cache作为Linux内核提升文件访问性能的核心机制,通过将磁盘数据缓存于内存,显著减少磁盘I/O次数。文章深度解析了Page Cache的架构及其关键数据结构,系统梳理address_space在文件和内存页间的桥梁作用。详细讲解address_space及page结构体的核心字段,阐明它们如何精准映射文件数据,实现高效的数据定位与状态管理,同时详细描述了读流程下的文件映射和内存映射的代码流程。

[linux内存管理] 第041篇 缺页异常之 do_swap_page:从 swap entry 到完整 swap-in 全流程 3日前 评论
[linux内存管理] 第041篇 缺页异常之 do_swap_page:从 swap entry 到完整 swap-in 全流程

深入剖析AArch64架构中Linux缺页异常的处理流程,本文聚焦do_swap_page函数的定位及其在缺页处理中的关键角色。通过梳理PTE的多种状态分支,明确do_swap_page仅在PTE为非present且编码为swap entry或特殊entry时介入,对swap entry的结构、swp_entry_t的编码机制进行深度解析,阐释type与offset的打包方式及其如何映射到实际swap区。文章还系统区分了swap cache与page cache的本质差异:page cache负责文件页面管理,swap cache则专为匿名页与swap slot建立高效缓存。

[linux内存管理] 第040篇 文件映射与匿名映射 5日前 1 条
[linux内存管理] 第040篇 文件映射与匿名映射

围绕 Linux 内存管理,文章清晰解释了匿名页和文件页的本质区别。匿名页用于存储临时数据,不与磁盘文件关联,典型如进程的堆、栈及 MAP_ANONYMOUS 映射,生命周期受进程控制,内存紧张时可被换出至 swap。文件页则对应磁盘文件,是文件缓存和 page cache 的载体,源自磁盘数据,即使进程结束页面也可能保留,用于如 mmap 文件映射、文件读写缓冲、可执行代码段和共享库。文章通过 meminfo 和进程 maps 的实际输出,详细对比两类内存页的来源、生命周期、换出机制及典型场景,并以表格形式全面总结两者在内存管理中的关键特性。内容深入浅出,既便于理解,又具有实操价值。

[linux内存管理] 第039篇 用户态内存映射malloc和mmap详解 1周前 评论
[linux内存管理] 第039篇 用户态内存映射malloc和mmap详解

深入解析Linux内存管理中进程用户态地址空间,聚焦VMA(虚拟内存区域)、malloc与mmap三大核心机制,结合ARM64平台和Linux 4.14源码,系统梳理struct mm_struct与struct vm_area_struct两大关键数据结构的设计和功能分工。通过精炼注释和结构关系图,清晰展示VMA在进程空间分布的原理及其与实际内存分配的对应关系,帮助读者直观理解Linux虚拟内存的映射过程。

[linux内存管理] 第038篇 深入剖析AArch64架构下的do_page_fault缺页异常处理 1周前 评论
[linux内存管理] 第038篇 深入剖析AArch64架构下的do_page_fault缺页异常处理

深入解析Linux内核在AArch64架构下的缺页中断处理机制,系统梳理从异常级别划分、地址翻译流程到异常向量表入口,详细剖析了缺页异常的同步捕获、寄存器存储细节及异常分发逻辑。通过do_mem_abort和关键fault_info表,揭示了内核高效应对各种内存访问异常的策略,实现按需分页、内存保护与共享等高级功能,高亮了AArch64平台虚拟内存管理的精妙与内核异常处理链路的完整闭环。

[linux内存管理] 第037篇 LRU链表详解 1周前 3 条
[linux内存管理] 第037篇 LRU链表详解

聚焦Linux内存管理的核心机制——内存回收,文章详细解析了内核如何通过LRU(最近最少使用)链表,实现对“冷”页面的精准识别和高效回收,保障系统在物理内存受限下的稳定运行。深入讲解了LRU链表的多层架构、页面在不同链表间的切换逻辑,并系统梳理了五类核心链表的数据结构,为理解和后续拓展如MGLRU机制奠定了扎实基础。

[linux内存管理] 第035篇 vmalloc详解 2周前 评论
[linux内存管理] 第035篇 vmalloc详解

内核启动的内存初始化分为Fixmap、线性映射、Buddy分配器和Slab分配器四大阶段,逐步实现高效的物理与虚拟内存管理。vmalloc通过vmap机制,将非连续物理内存映射为连续虚拟地址,极大提升内存分配灵活性。文中详解vmalloc区域管理与关键数据结构,介绍空闲及已分配管理策略,并列举常用分配释放API,并解释代码流程

[linux内存管理] 第034篇 slab内存分配器之kmalloc全面详解 1月前 1 条
[linux内存管理] 第034篇 slab内存分配器之kmalloc全面详解

深入解析Linux内核中kmalloc的内存池体系,详解其在高效分配小至中等连续物理内存块中的核心作用。文章重点说明kmalloc通过预先创建多种尺寸的slab内存池,有效应对频繁的通用及专属内存分配需求,并结合源码分析创建流程、类型划分及对应场景,帮助开发者理解内核内存分配机制的高效性与灵活性。

[linux内存管理] 第031篇 内核启动早期的slab分配器的自举 2月前 5 条
[linux内存管理] 第031篇 内核启动早期的slab分配器的自举

梳理Linux内核启动早期内存管理的四个阶段,文章深入分析了slab分配器自举的“鸡生蛋”难题:分配器本身依赖尚未初始化的自身结构体。详细解读slab分配器如何通过静态变量及多层自举逻辑,巧妙解决这一循环依赖困境,进而实现对象级缓存的高效分配与初始化,为内核后续稳定运行打下坚实基础。