深入解析内存页帧回收机制
在计算机系统中,内存管理是至关重要的一环,尤其是页帧回收机制,它对于维持系统的稳定运行和高效性能起着关键作用。下面将详细介绍页帧回收机制的各个方面。
1. 从inode缓存中回收页帧
- shrink_icache_memory()函数 :用于从inode缓存中移除未使用的inode对象。这里的“未使用”指的是inode不再有控制它的dentry对象。该函数首先检查gfp_mask参数中的__GFP_FS位,然后调用prune_icache()函数,最后根据inode缓存中仍包含的未使用inode数量和sysctl_vfs_cache_pressure变量的值返回一个值。
- prune_icache()函数 :扫描inode_unused列表,为了释放一个inode,该函数会释放与inode关联的任何私有缓冲区,使页缓存中引用该inode且不再使用的干净页帧无效,然后使用clear_inode()和destroy_inode()函数销毁inode对象。
2. 定期回收机制
页帧回收机制(PFRA)通过两种不同的机制进行定期回收:
- kswapd内核线程 :
- 必要性 :一些内存分配请求由中断和异常处理程序执行,它们不能阻塞当前进程等待页帧释放;此外,一些内存分配请求由已经获得对关键资源的独占访问的内核控制路径执行,因此不能激活I/O数据传输。在所有内存分配请求都由这类内核控制路径执行的罕见情况下,内核将无法释放内
超级会员免费看
订阅专栏 解锁全文
5771

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



