一、(N)UMA 模型中的内存组织
Linux支持的各种不同体系结构在内存管理方面差别很大。由于内核的明智设计,以及某些情况下插入的兼容层,这些差别被隐藏起来了。按照先前讨论过的,一个主要的问题是
页表中不同数目的间接层。另一个关键是
NUMA和UMA系统的划分。
内核对一致和非一致内存访问系统使用相同的数据结构,针对各种不同形式的内存布局,各个算法几乎没有什么差别。在UMA系统上,只使用一个NUMA结点来管理整个系统内存。而内存管理的其他部分则相信它们是在处理一个伪NUMA系统。
1、概述
在讲解内核中用于组织内存的数据结构之前,需要先定义几个概念。首先考虑NUMA系统。图3-3给出了下述内存划分的图示。
首先,内存划分为结点。每个结点关联到系统中的一个处理器,在内核中表示为pg_data_t的实例。
各个结点又划分为内存域,是内存的进一步细分。例如,对可用于 DMA操作的内存区是有限制的。只有前16 MB适用,还有一个高端内存