问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

详细讲解Linux内存管理之页面回收

发布网友 发布时间:2024-10-03 02:03

我来回答

1个回答

热心网友 时间:2024-11-06 04:25

请求调页机制允许用户态进程获取页框,然而,没有机制强制进程释放不再使用的页框。Linux内核的页面回收算法(PFRA)采用从用户进程和内核高速缓存“窃取”页框的方式解决这一问题,而非从伙伴系统的空闲块列表。在用完所有空闲内存之前,必须执行页框回收算法,否则内核可能陷入内存请求的僵局,导致系统崩溃。PFRA目标是安全地从“内存紧缺”的情形中恢复,通过释放最少的空闲页框。

PFRA通过检查页框所含内容,以不同的方式处理页框:不可回收页、可交换页、可同步页和可丢弃页。选择目标页是PFRA的关键步骤,其目标是释放页框并使之空闲。为此,PFRA采用多种策略:首先释放“无害”页,即未被任何进程使用的磁盘与内存高速缓存中的页;将用户态进程和所有页定为可回首页,以便PFRA能够窃得任何用户态进程页;取消引用一个共享页的所有页表项的映射以回收该共享页;仅回收“未用”页,使用LRU算法确定页的使用情况。

PFRA的设计包括谨慎选择检查高速缓存的顺序、基于页年龄排序、区别对待不同状态的页等策略。在释放页框时,PFRA利用反向映射技术快速确定指向同一页框的所有页表项。Linux内核为物理页面建立链表,记录引用页面的所有页表项。基于对象的反向映射技术使得PFRA能够检索引用某页的所有页表项,实现高效释放共享页框。

PFRA通过双向链表和优先级搜索树等数据结构管理匿名页面和文件映射页面的反向链接,实现快速定位引用页面的所有页表项。双向链表存储匿名页面的内存区域,而优先级搜索树用于文件映射页面,通过大小、起始和结束位置等属性实现高效查找。

在页面回收过程中,Linux内核通过shrink_page_list()函数更新所有引用回收页面的页表项,实现反向映射的自动化。该函数检查并确定都有哪些页表项引用了同一个物理页面。匿名页面和文件映射页面分别采用不同的方法,匿名页面通过遍历anon_vma表,文件映射页面通过优先级搜索树搜索。回收页面的关键代码流程包括更新页表项,处理不可回收页面,以及更新页面使用计数器等。

LRU(最近最少使用)链表在Linux中实现页面活跃状态的管理,通过active和inactive两个链表区分活跃和不活跃页面。活跃页面被放置在active链表中,不活跃页面被放置在inactive链表中。页面在两个链表之间移动,基于其活跃程度,Linux使用两个页面标志符PG_active和PG_referenced来判断页面的活跃程度,确保页面的高效管理。

为了降低锁的竞争,Linux引入了LRU缓存机制,通过批量添加页面到链表,避免频繁使用自旋锁。LRU缓存使用pagevec结构管理缓存页面,并通过lru_cache_add()和lru_cache_add_active()函数实现页面的延迟添加。页面在LRU链表之间移动的过程可以通过锁的竞争和LRU缓存的使用来优化。

PFRA的具体实现包括处理用户态进程、磁盘高速缓存和内存高速缓存中的页。核心函数如try_to_free_pages()和balance_pgdat()触发页面回收,分别在内存严重不足或后台进程检测到内存不足时执行。函数shrink_zones()和shrink_slab()在内存区域列表中释放页面,shrink_zone()和shrink_slab()实现页面回收的细节操作。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 我在惠州用的是移动卡,我女友在深圳用的是东莞的动感地带的卡,我们要开... Linux内核:内存回收之内存压缩的基本过程 怎样才能让自己变得强大起来 ...的QQ活动,说开通或续费超级会员就可以领绝版气泡,如果我真的开通或... 番茄花园XP系统免费下载不用光盘,可以下载到吗? 番茄花园xp系统不刻录直接在硬盘上安装改怎么装 我现在是卖鞋的店员需要久站,回家腿肚明显粗了,买静脉曲张袜子穿行吗... 下一个番茄花园xp系统安装的话,非得有光驱吗? 小米手表连不上蓝牙怎么回事 我装的是番茄花园的XP系统.如果要用光盘修复系统用其它版的可以吗? PSP连接电脑出现“I/O 设备错误怎么办?” 小弟跪求~ ...这个是你之前百度问过别人的 我看你后来解决的 从番茄花园下的XP是否需要刻录到CD上才能安装啊? 烦事天天有,贵在心放宽!!转赠怎么理解 ? 你好,我看到你08年时发的关于双飞燕省师傅鼠标左键的问题 你好我看你问过《明星志愿3》的乱码的问题 十字语录 你好,遇到了和你一样的问题,excel最小化后显示的名称前面带着microsoft... ...不忍离去,每天纠缠于人世间的爱恨情仇,这是为什么? 佛教 关于有无世间法问题 我到底做没做错 存储管理页面分配 我和女朋友一张是 顺德卡一张是惠州卡,2张卡都进了市集群网,还有没办法... 惠州移动卡 我是惠州神州行畅听卡,我女朋友在省外,请问可以设置亲情号或短号吗? ...和大陆平均海拔高度关系示意图(图中字母为各大陆的代号),M大陆是... 更新小米6.5.3系统提示错误 下载系统更新文件后提示重启更新 重启后... ...分别表示的大陆名称是( ) A.非洲大陆、亚欧大陆、美 ...11系统每次更新(不管大小)都用电脑刷完整包是不是错误会相对少一点... 世界陆地可分为亚欧大陆、非洲大陆、北美大陆、南美大陆、南极大陆和澳... ...简笔画图,按数字顺序,他们分别表示的大陆名称是( )A.非洲大陆... 我想安装我的世界,但不知道为什么,一安装就解析包错误,怎么办? 我... ...变化图(下图),回答下列各题。 小题1:该大陆是( ) A.亚欧大陆... ...老雷技术怎么样?是大师还是业余棋手?特别多话的……… ...3个小人在地图上过情节的游戏叫什么,哪里有下载FC游戏哦~~~_百度知... ...老游戏了,可以控制人物走来走去的,不是三国志这种 我想玩以前在智力卡上的三国志曹操传,网上有fc版的,我用的是手机,可... 芈月传手游可以玩么,手机可以玩三国志曹操传吗 区块链的类型是什么,区块链几种类型 我在电脑上涌FC模拟器玩红白机的游戏时,为什么玛丽兄弟3,双截龙这些游... 提问浙江温州的朋友,温州今天的天气怎么样!下雨了吗!?