Linux分区页框分配器怎么使用
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章主要讲解了"Linux分区页框分配器怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux分区页框分配器怎么使用"吧!分区页框分配器
千家信息网最后更新 2024年11月17日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安全错误
数据库的锁怎样保障安全
易语言做数据库登陆界面
深圳市社保局数据库版本不一样
数据库保护技术的内容范围
河北企业软件开发质量放心可靠
服务器在哪里插键盘
计算机网络技术笔试
简历范文软件开发
服务器硬盘使用年限
网络安全CS是指
服务器400请求签名无效
华为畅享7显示无法连接服务器
软件开发部英文缩写
湖南众智互联网学院学软件开发
中小孚生家庭教育与网络安全
月牙堂网络技术
2018年校园网络安全
app软件开发品质售后无忧
延庆区咨询网络技术服务介绍
员工管理系统数据库总结
沧州网络技术参考价格
山东移动网络安全演习
芬兰电网网络安全事故
师大云端数据库
数据库系统的安全机制有哪些
开传奇服务器多少钱
数据库对象有哪6种
如何架构ftp服务器
戴尔服务器有什么功效
服务器如何进行网络控制
西安8年软件开发经验待遇