news 2026/4/16 16:10:25

50、深入解析页框回收机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
50、深入解析页框回收机制

深入解析页框回收机制

1. 页框回收算法概述

Linux在为用户模式进程或内核分配动态内存之前的检查相对宽松。例如,对于单个用户创建的进程所分配的总RAM量没有严格检查,对内核使用的众多磁盘缓存和内存缓存的大小也没有限制。这种设计能让内核充分利用可用的RAM。当系统负载较低时,RAM主要被磁盘缓存填充,少数运行的进程可从缓存信息中受益;而当系统负载增加时,RAM主要被进程页面填充,缓存会缩小以为更多进程腾出空间。

内存和磁盘缓存会不断占用页框,但从不释放。这是因为缓存系统无法确定进程何时会重用缓存数据,也就无法确定应释放的缓存部分。此外,用户模式进程通过需求分页机制获取页框,但该机制无法强制进程在不再使用页框时释放它们。

因此,迟早所有的空闲内存都会被分配给进程和缓存。Linux内核的页框回收算法通过从用户模式进程和内核缓存中“窃取”页框,来重新填充伙伴系统的空闲块列表。实际上,页框回收必须在所有空闲内存被用完之前进行,否则内核可能陷入致命的内存请求链,导致系统崩溃。因为释放一个页框需要将其数据写入磁盘,而这一操作又需要另一个页框(如分配I/O数据传输的缓冲区头),若没有空闲页框,就无法释放任何页框。所以,页框回收的目标之一是保留一个最小的空闲页框池,以便内核能从“内存不足”的情况中安全恢复。

2. 选择目标页

页框回收算法(PFRA)的目标是挑选页框并使其变为空闲。显然,PFRA选择的页框必须是非空闲的,即不能已经包含在伙伴系统使用的free_area数组中。

PFRA根据页框的内容以不同方式处理它们,可分为不可回收页、可交换页、可同步页和可丢弃页,具体如下表所示:
|

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:32:04

51、深入解析页面帧回收算法:原理、机制与应用

深入解析页面帧回收算法:原理、机制与应用 在操作系统的内存管理中,页面帧回收算法(PFRA)起着至关重要的作用。它负责管理用户模式进程、磁盘缓存和内存缓存所拥有的各种页面,并遵循一系列启发式规则。下面将详细介绍页面帧回收算法的各个方面。 1. 页面帧回收算法概述 …

作者头像 李华
网站建设 2026/4/16 14:02:50

LightRAG终极指南:从入门到精通的完整教程

LightRAG终极指南:从入门到精通的完整教程 【免费下载链接】LightRAG "LightRAG: Simple and Fast Retrieval-Augmented Generation" 项目地址: https://gitcode.com/GitHub_Trending/li/LightRAG 还在为传统RAG系统检索效果不佳而烦恼&#xff1f…

作者头像 李华
网站建设 2026/4/16 3:39:59

Wan2.2视频生成终极指南:三步实现本地AI创作革命

Wan2.2视频生成终极指南:三步实现本地AI创作革命 【免费下载链接】Wan2.2-TI2V-5B Wan2.2-TI2V-5B是一款开源的先进视频生成模型,基于创新的混合专家架构(MoE)设计,显著提升了视频生成的质量与效率。该模型支持文本生成…

作者头像 李华
网站建设 2026/4/16 12:28:01

深入解析Dalamud:FF14插件开发框架的技术架构与实践指南

在《最终幻想XIV》的游戏生态中,Dalamud作为一款功能强大的插件开发框架,为开发者提供了与游戏深度交互的能力。这个基于.NET Core构建的系统通过多层架构实现了对游戏数据的实时访问和界面增强,让玩家能够自定义游戏体验。 【免费下载链接】…

作者头像 李华
网站建设 2026/4/16 13:16:22

StarGAN实战指南:掌握多域图像生成的完整流程

StarGAN实战指南:掌握多域图像生成的完整流程 【免费下载链接】stargan StarGAN - Official PyTorch Implementation (CVPR 2018) 项目地址: https://gitcode.com/gh_mirrors/st/stargan StarGAN作为CVPR 2018的突破性研究成果,彻底改变了传统图像…

作者头像 李华
网站建设 2026/4/16 13:14:55

Go接口测试神器:5分钟快速上手vektra/mockery完整指南

Go接口测试神器:5分钟快速上手vektra/mockery完整指南 【免费下载链接】mockery A mock code autogenerator for Go 项目地址: https://gitcode.com/gh_mirrors/moc/mockery 在Go语言开发中,单元测试是保证代码质量的关键环节。当你需要测试依赖外…

作者头像 李华