Linux分区页框分配器怎么使用
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章主要讲解了"Linux分区页框分配器怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux分区页框分配器怎么使用"吧!分区页框分配器
千家信息网最后更新 2025年12月04日Linux分区页框分配器怎么使用
当上面两种分配方案都不能满足要求时,考虑页面回收、杀死进程等操作后在试。
这篇文章主要讲解了"Linux分区页框分配器怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux分区页框分配器怎么使用"吧!
分区页框分配器
页框分配在内核里的机制我们叫做分区页框分配器(zoned page frame allocator),在linux系统中,分区页框分配器管理着所有物理内存,无论你是内核还是进程,都需要请求分区页框分配器,这时才会分配给你应该获得的物理内存页框。当你所拥有的页框不再使用时,你必须释放这些页框,让这些页框回到管理区页框分配器当中。
有时候目标管理区不一定有足够的页框去满足分配,这时候系统会从另外两个管理区中获取要求的页框,但这是按照一定规则去执行的,如下:
如果要求从DMA区中获取,就只能从ZONE_DMA区中获取。 如果没有规定从哪个区获取,就按照顺序从 ZONE_NORMAL -> ZONE_DMA 获取。 如果规定从HIGHMEM区获取,就按照顺序从 ZONE_HIGHMEM -> ZONE_NORMAL -> ZONE_DMA 获取。

其函数接口
内核中根据不同的分配需求有6个函数接口来请求页框,最终都会调用到__alloc_pages_nodemask。
可以看页框分配器的核心函数是__alloc_pages_nodemask,在讲这个函数之前我们先看下两个标志:
gfp_mask
__GFP_DMA:请求在ZONE_DMA区域中分配页面; __GFP_HIGHMEM:请求在ZONE_HIGHMEM区域中分配页面; __GFP_MOVABLE:ZONE_MOVALBE可用时在该区域分配页面,同时表示页面分配后可以在内存压缩时进行迁移,也能进行回收; __GFP_RECLAIMABLE:请求分配到可恢复页面; __GFP_HIGH:高优先级处理请求; __GFP_IO:请求在分配期间进行 I/O 操作; __GFP_FS:请求在分配期间进行文件系统调用; __GFP_ZERO:请求将分配的区域初始化为 0; __GFP_NOFAIL:不允许请求失败,会无限重试; __GFP_NORETRY:请求不重试内存分配请求;
alloc_flags
ALLOC_WMARK_MIN:仅在最小水位water mark及以上限制页面分配; ALLOC_WMARK_LOW:仅在低水位water mark及以上限制页面分配; ALLOC_WMARK_HIGH:仅在高水位water mark及以上限制页面分配; ALLOC_HARDER:努力分配,一般在gfp_mask设置了__GFP_ATOMIC时会使用; ALLOC_HIGH:高优先级分配,一般在gfp_mask设置了__GFP_HIGH时使用; ALLOC_CPUSET:检查是否为正确的 cpuset; ALLOC_CMA:允许从 CMA 区域进行分配;
__alloc_pages_nodemask
struct page *
__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid,
nodemask_t *nodemask)
{
page = get_page_from_freelist(alloc_mask, order, alloc_flags, &ac);//fastpath分配页面:从pcp(per_cpu_pages)和伙伴系统中正常的分配内存空间
......
page = __alloc_pages_slowpath(alloc_mask, order, &ac);//slowpath分配页面:如果上面没有分配到空间,调用下面函数慢速分配,允许等待和回收
......
}
在页面分配时,有两种路径可以选择,如果在快速路径中分配成功了,则直接返回分配的页面;快速路径分配失败则选择慢速路径来进行分配。总结如下:
正常分配(或叫快速分配):
如果分配的是单个页面,考虑从per CPU缓存中分配空间,如果缓存中没有页面,从伙伴系统中提取页面做补充。
分配多个页面时,从指定类型中分配,如果指定类型中没有足够的页面,从备用类型链表中分配。最后会试探保留类型链表。
慢速(允许等待和页面回收)分配:
感谢各位的阅读,以上就是"Linux分区页框分配器怎么使用"的内容了,经过本文的学习后,相信大家对Linux分区页框分配器怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
分配
页面
分配器
中分
内存
函数
系统
区域
类型
路径
管理
内核
水位
空间
管理区
慢速
学习
限制
两个
优先级
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云端数据库怎么样
徐州创思网络技术
阿里云 rds数据库
软件开发中错误英文
九州盛世网络技术有限公司
在当前数据库找不到其他文件
阿里巴巴云服务器如何升级
服务器回收服务价钱
单服务器升级到集群服务器
深圳大学网络安全专业
东莞互联网科技服务有限公司
省级数字家庭管理平台服务器地址
威海市蓝天网络技术服务有限公司
梧州吉屋网络技术有限公司
5G网络安全研究主要内容
数据库两张表数据互相加减
jsp连接不上数据库
网络安全基础信息检查报告
网络安全 不可否认性
社区专职干部后备人才数据库
网络安全行业人才缺口
ftp服务器自动登录取消
云服务器复制东西进去特别慢
数据库设计qq实时聊天
it软件开发分类
延庆区咨询软件开发包括什么
网络安全工程师需求量大吗
常用的服务器管理命令
旅行管理系统数据库设计
科普网络安全的内容