Rob*_*ton 3 linux memory memory-management linux-kernel
当我检查 pagetypeinfo 时
猫 /proc/pagetypeinfo
我看到三种类型的内存区域;
Linux如何选择内存区域来分配新页面?
这些内存区域仅为 32 位系统定义,64 位系统不定义。
main memory请记住,这些是我们正在讨论的可访问的内核。在32 bit(4GB) 系统中,内核空间和用户空间之间的划分为1:3。这意味着内核可以访问 1GB,用户空间可以访问 3GB。内核的1GB划分如下:
Zone_DMA (0-16MB): 永久映射到内核地址空间。
出于兼容性原因,旧 ISA 设备只能寻址主内存的较低 16MB。
Zone_Normal (16MB-896MB): 永久映射到内核地址空间。
许多内核操作只能使用它进行ZONE_NORMAL,因此它是性能最关键的区域,并且是主要由内核分配的内存。
ZONE_HIGH_MEM(896MB以上): 未永久映射到内核的地址空间。
内核可以访问整个 4GB 主内存。内核的 1GB 到Zone_DMA&Zone_Normal以及用户的 3GB 到ZONE_HIGH_MEM. 使用 Intel 的Physical Address Extension (PAE),可以获得 4 个额外的位来寻址主内存,从而形成 36 位,总共可以访问 64GB 的内存。增量地址空间(36 位地址 - 32 位地址)用于ZONE_HIGH_MEM映射到用户访问的主存储器(即 2GB - 4GB 之间)。
阅读更多:
http://www.quora.com/Linux-Kernel/Why-is-there-ZONE_HIGHMEM-in-the-x86-32-Linux-kernel-but-not-in-the-x86-64-kernel
http:/ /www.quora.com/Linux-Kernel/high-memory-and-normal-memory
Linux 3/1 虚拟地址分割有何区别