Linux内核6.6 内存管理(13)匿名页面的生命周期(坑没填完)

0.匿名页面和paga cache

维度

匿名页面

page cache

磁盘文件关联

无,“凭空” 分配的内存

有,是文件数据的内存缓存

数据持久化

进程退出 / 断电后丢失

可写回磁盘,文件内容持久保存

内存回收策略

优先被换出到 swap(因无文件备份)

优先写回磁盘,若磁盘繁忙才换出到 swap

典型场景

程序运行时的临时数据(变量、栈)

文件读写操作(如日志读取、文件修改)

内核管理模块

由内存分配器(如 slab、伙伴系统)管理

由文件系统(如 ext4)和页缓存机制管理

1.匿名页面的诞生

  • malloc/mmap 接口分配的内存 -> do_anonymous_page ()
  • 写时复制:当缺页中断出现写保护错误时,新分配的页面是匿名页面
  • (1)do_wp_page ()
  • 只读的 special 映射的页,例如映射到 zero page 的页面。
  • 非单身匿名页面(有多个映射的匿名页面,即 page->_mapcount > 0)
  • 只读的私用映射的 page cache。
  • KSM 页面。
  • (2)do_cow_page ()
  • 共享的匿名页面(shared anonymous mapping,shmm)
  • 上述这些情况在发生写时复制时会新分配匿名页面。
  • do_swap_page (),从 swap 分区读回数据时会新分配匿名页面。
  • 迁移页面。

2.匿名页面的使用

匿名页面在缺页中断中分配完成之后,就建立了进程虚拟地址空间VMA和物理页面的映射关系,用户进程访问虚拟地址即访问到匿名页面的内容

3.匿名页面的换出

全部评论

相关推荐

投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务