__GFP_MOVABLE是怎样影响页框链表的分配分析【linux4.8.4】

本文探讨了__GFP_MOVABLE标志位如何影响Linux内核中的页面分配,特别是在__alloc_pages_nodemask函数中的作用。通过gfpflags_to_migratetype函数,将GFP标志位转换为页迁移类型,如MIGRATE_UNMOVABLE、MIGRATE_RECLAIMABLE和MIGRATE_MOVABLE。分配页框的过程涉及一系列调用,最终在zone的页框链表中进行物理页面的分配。
摘要由CSDN通过智能技术生成

首先让我们看下__GFP_MOVABLE的定义

#define __GFP_MOVABLE ((__force gfp_t)___GFP_MOVABLE)

#define ___GFP_MOVABLE 0x08u

这个标志位在很多地方都有使用,如磁盘文件系统分配页缓存、用户态程序分配堆栈空间等。

那我们来看下,此类标志位是怎么影响页面分配的?

其余的先不分析,我们直接从分配物理页面的入口函数__alloc_pages_nodemask来分析。

在__alloc_pages_nodemask函数中,有个非常重要的变量---页分配上下文,具体初始化代码:

struct alloc_context ac = {
.high_zoneidx = gfp_zone(gfp_mask),
.zonelist = zonelist,
.nodemask = nodemask,
.migratetype = gfpflags_to_migratetype(gfp_mask),
};

在此上下文中,条用gfpflags_to_mi

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值