Krishnamoorthi M Asked: 2020-02-13 21:53:06 +0800 CST2020-02-13 21:53:06 +0800 CST 2020-02-13 21:53:06 +0800 CST Linux中虚拟内存的大小 772 Linux 中用户和内核虚拟内存的大小是根据什么决定的?(32 位,如果相关的话。)它是可配置的吗? 如果我们有 512 MB RAM 用户和内核虚拟地址的大小是多少? linux virtual-memory 1 个回答 Voted Best Answer Stephen Kitt 2020-02-14T02:57:54+08:002020-02-14T02:57:54+08:00 可用的地址空间取决于架构。一个限制是架构本身可用的地址空间量。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 的地址空间。 其他架构有不同的设置。
可用的地址空间取决于架构。一个限制是架构本身可用的地址空间量。64 位架构通常允许使用 64 位指针,而 32 位架构允许使用 32 位指针。可寻址空间的数量可以受到超出这些约束的架构的限制,并且架构也可以强加某种结构。最重要的是,内核应用自己的决定,其中一些是可配置的。
在 32 位 x86 上,可能有五种不同的设置:
对于具有 512MiB RAM 的系统,您应该使用默认的 3G/1G 拆分;用户空间将有 3GiB 的地址空间,内核将有 1GiB。
在 64 位 x86 上,可能有两种不同的设置,允许用户空间和内核使用 128 TiB 或 64 PiB 的地址空间。
其他架构有不同的设置。