页帧回收算法(PFRA)实现解析
1. PFRA 概述
页帧回收算法(PFRA)在内存管理中起着关键作用,它主要负责回收不再使用的页帧,以确保系统有足够的可用内存。PFRA 通过一系列函数,如 mark_page_accessed() 、 page_referenced() 和 refill_inactive_zone() ,来管理页在最近最少使用(LRU)列表之间的移动。
2. 关键函数解析
2.1 mark_page_accessed() 函数
当内核需要标记一个页为已访问时,会调用 mark_page_accessed() 函数。这种情况通常发生在用户模式进程、文件系统层或设备驱动程序引用一个页的时候,例如:
- 按需加载进程的匿名页(由 do_anonymous_page() 函数执行)。
- 按需加载内存映射文件的页(由 filemap_nopage() 函数执行)。
- 按需加载 IPC 共享内存区域的页(由 shmem_nopage() 函数执行)。
- 从文件中读取数据页(由 do_generic_file_read() 函数执行)。
- 换入一个页(由 do_swap_page() 函数执行)。
- 在页缓存中查找缓冲页(由 __find_get_block() </
超级会员免费看
订阅专栏 解锁全文
5

被折叠的 条评论
为什么被折叠?



