Linux

Linux中虛擬記憶體的大小

  • February 13, 2020

Linux 中使用者和核心虛擬記憶體的大小是根據什麼決定的?(32 位,如果相關的話。)它是可配置的嗎?

如果我們有 512 MB RAM 使用者和核心虛擬地址的大小是多少?

可用的地址空間取決於架構。一個限制是架構本身可用的地址空間量。64 位架構通常允許使用 64 位指針,而 32 位架構允許使用 32 位指針。可定址空間的數量可以受到超出這些約束的架構的限制,並且架構也可以強加某種結構。最重要的是,核心應用自己的決定,其中一些是可配置的。

在 32 位 x86 上,可能有五種不同的設置

  • 預設分配 3GiB 給使用者空間,1GiB 給核心,並允許近 1GiB 的“低”物理記憶體——分割在 0xC0000000;
  • 變體 3G/1G 拆分將拆分向下移動以允許完整的 1GiB 低記憶體 — 拆分位於 0xB000000;
  • 2G/2G 拆分將 2GiB 分配給使用者空間,2GiB 分配給核心,並且有兩個變體,例如 3G/1G 拆分——拆分位於 0x8000000 或 0x7800000;
  • 1G/3G 分割將 1GiB 分配給使用者空間,3GiB 分配給核心——分割在 0x4000000。

對於具有 512MiB RAM 的系統,您應該使用預設的 3G/1G 拆分;使用者空間將有 3GiB 的地址空間,核心將有 1GiB。

在 64 位 x86 上,可能有兩種不同的設置,允許使用者空間和核心使用 128 TiB 或 64 PiB 的地址空間。

其他架構有不同的設置。

引用自:https://unix.stackexchange.com/questions/567318