一、Linux的物理地址空间分布的模型
内存模型是从处理器角度看到的物理内存分布,内核管理不同内存模型的方式存在差异。
对于物理地址空间分布的模型,在编译内核时就已经确定使用哪种(linux-6.1/include/asm-generic/memory_module.h)。
1)FLATMEM(平坦物理内存模型)
内存的物理地址空间是连续的,没有空洞。
在这种模型中所有的页面放在全局mem_map数组中,这个模型适用于非NUMA系统的连续或大部分连续的物理内存)。
2)SPARSEMEM(稀疏物理内存模型)
内存的物理地址空间存在空洞,只有这种模型支持内存热插拔。另外这种模型非常适用于物理内存天生都不是连续的NUMA结构。
注:而在NUMA中处理器与处理器之间通过总线连接起来以支持对其他处理器本地内存的访问,处理器访问本地内存的速度要快于其他处理器本地内存(每个NUMA节点有自己的内存控制器和内存插槽)。UMA结构中所有处理器对内存的访问具有相同的速度,比如SMP处理器就是这种结构,可以将UMA当作是一个NUMA节点