linux 内核 - 内存管理的层次化结构
一:内存节点
pglist_data
是 Linux 内核中用来描述一个内存节点(node)的数据结构:在 NUMA 系统:每个 NUMA 节点有一个 pglist_data
,独立描述本节点的物理内存布局;在 UMA 系统:只有一个 pglist_data
,覆盖整个系统的内存; 备注pglist_date 别名是 pg_data_t。
二:内存域
一个内存节点下面有分为多个内存域,是内存的进一步细分,内存域是一种为了处理硬件限制而把物理内存划分成的逻辑区域的概念。它主要存在的原因是:不同硬件设备和 CPU 架构对可访问的物理内存范围有要求,内核需要按照这些要求管理和分配内存。
场景的内存域类型有:
三:内存页(页帧)
内存域下面又划分为众多页帧,页帧代表系统内存的最小单位,对内存中的每个页都会创建struct page的一个实例。