当物理内存的大小接近或超过虚拟内存的最大大小时,使用高内存(highmem)。使用这种方法的架构的传统拆分是 3:1,用户空间为 3GiB,内核空间为顶部 1GiB。这意味着内核最多可以映射 1 GiB 的物理内存。
在移动设备中,平均物理内存约为 1 GiB。所以内核可以映射那么多内存。
具有 1GiB 物理内存的设备是否需要 highmem?
我们可以使用 highmem 配置选项处理多少物理内存?
谢谢
当物理内存的大小接近或超过虚拟内存的最大大小时,使用高内存(highmem)。使用这种方法的架构的传统拆分是 3:1,用户空间为 3GiB,内核空间为顶部 1GiB。这意味着内核最多可以映射 1 GiB 的物理内存。
在移动设备中,平均物理内存约为 1 GiB。所以内核可以映射那么多内存。
具有 1GiB 物理内存的设备是否需要 highmem?
我们可以使用 highmem 配置选项处理多少物理内存?
谢谢
是的,需要 hignmem,内存映射 IO 和物理 RAM 的非线性映射需要一些 1GiB 地址空间。
您实际上可以看到使用 lowmem 可以访问多少内存。在具有 1GB 物理内存和 3G/1G VMSPLIT 选项的机器上,我得到以下值:
Virtual kernel memory layout:
...
lowmem : 0xc0000000 - 0xef800000 ( 760 MB)
因此,如果您的物理内存超过 760MB,您可能需要启用 highmem。
至于使用 highmem 配置选项可以寻址多少内存,我不确定,但我猜最大是物理可寻址的,所以 4GiB(或接近它)没有 LPAE。但是大多数 SoC 在硬件方面都会有一个下限,因为内存映射的外围设备将使用一些地址空间。