Linux内存分区方案
发布时间
阅读量:
阅读量
Linux具备对多种硬件架构的支持能力,因此其内存描述机制必须具备通用性,以便于实现高效的内存管理。为此,Linux引入了内存节点、内存区以及页框等概念。
内存节点(Node):该划分方式主要依据CPU访问成本的差异进行。在多CPU系统中,本地内存与远端内存被划分为不同的节点。内核通过struct pg_data_t结构体来表征内存节点。
内存分区(Zone):在对内存节点进一步细分的基础上,Linux将每个节点划分为多个区域。内核使用struct zone结构体来描述这些区域。通常情况下,一个节点会被划分为DMA、Normal和High Memory三个不同的分区。
- DMA内存区:即直接内存访问区域,通常对应于物理地址空间的前16MB部分。该区域主要用于一些外部设备的数据传输操作,允许外设与主存之间直接交换数据,而无需经过系统CPU的干预。
- Normal内存区:涵盖从16MB至896MB范围内的物理地址空间。
- HighMemory内存区:位于896MB之后的物理地址空间。
为何高端内存的边界设定为896M? 这与32位Linux系统的虚拟地址空间限制密切相关。32位系统中虚拟地址空间范围为0-4G,其中0-3G分配给用户态程序使用,而3G-4G则用于内核态运行环境。这表明内核仅拥有1G的虚拟地址空间可用资源。当实际物理存储容量超过1
全部评论 (0)
还没有任何评论哟~
