虽然我试图了解32位cpu和Linux的高内存问题,但为什么64位cpu没有high-memory problem?
特别是,如何将虚拟内存划分为内核空间和用户空间,以便64位cpu不存在高内存需求?
感谢。
答案 0 :(得分:3)
32位系统只能处理4GB内存。在Linux中,它分为3GB的用户空间和1GB的内核空间。这1GB有时是不够的,因此内核可能需要映射和取消映射内存区域,这会导致相当大的性能损失。内核空间是“高”1GB,因此称为“高内存问题”。
64位系统可以解决巨大的内存量 - 16 EB - 因此此问题不会发生。
答案 1 :(得分:2)
使用32位地址,您只能寻址2 ^ 32字节的内存(4GB)。所以如果你有更多,你需要以一种特殊的方式解决它。使用64位地址,您可以毫不费力地处理2 ^ 64字节的内存,并且该数字比地球上存在的所有内存都要大。
答案 2 :(得分:2)
该位数是指处理器的字大小。除其他外,字大小是机器上内存地址的大小。内存地址的大小会影响唯一可以引用的字节数。所以做一些简单的数学运算我们发现在32位系统上最多存在2 ^ 32 = 4294967296个存储器地址,这意味着你对大约4GB的RAM有数学限制。
但是在64位系统上,您有2 ^ 64 = 1.8446744e + 19个可用内存地址。这意味着您的计算机理论上可以参考大约20艾字节的RAM,这比计算机历史上任何人都需要的RAM都多。