【Linux 内核 内存管理】memblock 分配器 ④ ( memblock、memblock_type、memblock_region 结构体的关系 )

本文详细介绍了Linux内核中memblock、memblock_type和memblock_region三个关键结构体之间的关系。memblock结构体包含了内存类型和预留类型等成员,每个成员都是memblock_type结构体的实例。memblock_type结构体包含区域数量、最大值和总大小等信息,并通过regions指针指向memblock_region结构体。这些数据结构在内存分配和管理中起到核心作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >





一、memblock、memblock_type、memblock_region 结构体的关系




1、memblock、memblock_type 关系


memblock 分配器 定义在 Linux 内核源码的 linux-4.12\include\linux\memblock.h#48 位置 ;

struct memblock {
	bool bottom_up;  /* is bottom up direction? */
	phys_addr_t current_limit;
	struct memblock_type memory;
	struct memblock_type reserved;
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
	struct memblock_type physmem;
#endif
};

源码路径 : linux-4.12\include\linux\memblock.h#48

memblock 结构体中的 memory ( 内存类型 ) , reserved ( 预留类型 ) , physmem ( 物理页内存类型 ) 这 3 3 3 个成员都是 memblock_type 结构体实例 ;

在这里插入图片描述


2、memblock_type、memblock_region 关系


struct memblock_type 结构体 定义在 Linux 内核源码的 linux-4.12\include\linux\memblock.h#40 位置 ;

struct memblock_type {
	unsigned long cnt;	/* number of regions */
	unsigned long max;	/* size of the allocated array */
	phys_addr_t total_size;	/* size of all regions */
	struct memblock_region *regions;
	char *name;
};

源码路径 : linux-4.12\include\linux\memblock.h#40

其中的 regions 成员是 struct memblock_region 结构体类型的指针 ;

在这里插入图片描述





二、上述数据结构关系图示



在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值