内存平衡

内存平衡

gfp_mask是内存分配掩码,gfp是get free page的缩写

GFP分配掩码的布局

image-20210426220058559

分配掩码包括两部分,内存域修饰符(占低4位)和内存分配标志(从第5位开始)

1.内存域修饰符

内存域zone有ZONE_DMA、ZONE_DMA32、ZONE_NORMAL、ZONE_HIGHMEM、ZONE_MOVABLE,内存域的修饰符有:

#define __GFP_DMA        0x01u
#define __GFP_HIGHMEM    0x02u
#define __GFP_DMA32      0x04u
#define __GFP_MOVABLE    0x08u

唯独没有ZONE_NORMAL的修饰符,因为ZONE_NORMAL是默认的内存申请类型。

image-20210426221552066

对应的内存域修饰符与伙伴系统分配器扫描内存域的顺序的关系如下:

无							    ZONE_NORMAL->ZONE_DMA32->ZONE_DMA
__GFP_DMA32						ZONE_DMA32->ZONE_DMA
__GFP_DMA						ZONE_DMA
__GFP_DMA&__GFP_HIGHMEM			ZONE_DMA
__GFP_HIGHMEM					ZONE_HIGHMEM-> ZONE_NORMAL->ZONE_DMA32->ZONE_DMA

2.内存分配标志

#define __GFP_WAIT    ((__force gfp_t)___GFP_WAIT) /* 内存分配的过程中可以被打断 */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值