Linux 5.13中,匿名内存页对应的struct address_space及device mapping是什么?
Linux 5.13 匿名内存页的 struct address_space 与 Device Mapping 解析
支撑匿名内存页的 struct address_space
匿名内存页(如用户进程的栈、堆内存)在未被换出到swap时,其struct page的mapping字段并不指向常规的struct address_space。内核通过设置mapping字段的PAGE_MAPPING_ANON标记位,将该字段的低地址部分指向该页所属的struct vm_area_struct(VMA),用于内存反向映射等管理操作。
只有当匿名页被换出到swap设备后,mapping字段才会指向swap设备对应的struct address_space,同时page->index会记录该页在swap分区中的偏移位置。
匿名内存页对应的 Device Mapping
- 未换出状态:此时匿名页完全驻留在物理内存中,没有关联的块设备,因此不存在对应的device mapping。
page->mapping的作用仅关联到所属VMA,用于内存管理逻辑。 - 换出状态:当匿名页被交换到swap设备时,其对应的device mapping就是swap设备本身。swap设备的
struct address_space由内核swap子系统维护,负责管理swap分区上的页数据读写。
是否属于特殊设备
匿名页在未换出时不属于任何设备;只有在被换出到swap设备后,才与swap这种特殊块设备关联。swap设备是专门用于存储被换出内存页的块设备(可以是磁盘分区、swap文件等),是内核内存管理子系统用于扩展系统可用内存的核心组件。
内容的提问来源于stack exchange,提问作者Lingfeng Xiang
相关产品推荐
相关产品推荐

