linux内核探索之内存管理(一):概述

    Linux内核一般将处理器的虚拟地址空间划分为两个部分。底部比较大的部分用于用户进程(0-3G),顶部则专用于内核(3G-4G)。在两个用户进程上下文切换期间底部会改变,但虚拟地址空间的内核部分总是保持不变。在IA-32平台,地址空间在用户和内核之间划分的比例为3:14GB的内存空间,3GB给用户空间,1GB给内核。

    可用的物理内存将映射到内核的地址空间中。访问内存时,如果所用的虚拟地址与内核区域的起始地址之间的偏移,不超出可用物理内存的长度,那么该虚拟地址会自动关联到物理页帧。虚拟地址空间的内核部分,必须小于CPU理论地址空间的最大长度。如果物理内存比可以映射到内核地址空间中的数量多,内核会使用高端内存来管理。比如物理内存大小2G,而内核可以直接管理的物理内存数量为896M,那么超过896M的物理内存会通过高端内存寻址。64位的系统,地址空间巨大,不需要高端内存。

两种计算机系统:

UMAuniform memory access):内存连续。

NUMAnon-uinform memory access):多处理器计算机,每个CPU有自己的本地内存CPU间通过总线相连,访问其他CPU的内存比访问自身的慢。CPU间的内存不连续。

主要参考《深入Linux内核架构》

你可能感兴趣的:(linux内核探索之内存管理(一):概述)