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

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

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

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

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

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

[linux内存管理] 第028篇 do_anonymous_page只处理私有映射吗? 6月前 1 条
[linux内存管理] 第028篇 do_anonymous_page只处理私有映射吗?

文章摘要:本文探讨了Linux内核中do_anonymous_page()函数的作用,解释了它为什么只处理私有匿名映射。通过分析do_pte_missing()、vma_is_anonymous()、vma_set_anonymous()等函数,以及mmap_region()函数中的逻辑,文章得出结论:在mmap()流程中,只有私有匿名映射的vm_ops会被设置为NULL,从而被do_anonymous_page()处理。其他类型的映射,如共享匿名映射和文件映射,其vm_ops不为空,因此不会被该函数处理。

linux内核源码解析04–用户进程页表创建 2024-11-20 评论
linux内核源码解析04–用户进程页表创建

科学边界发表的文章详细阐述了Linux内核中进程页表的创建、缺页异常处理以及进程切换时的内存管理机制。文章首先介绍了进程创建时页表的创建过程,包括fork时复制父进程的页表、分配pgd物理页面以及拷贝页表项。其次,描述了缺页异常导致的写时复制(COW)的处理流程,包括分配新页面、复制旧页面内容以及更新页表项。最后,文章解释了进程切换时如何通过更新ASID和页表基地址来实现地址空间的切换。这些内容对于理解Linux内存管理至关重要。