@ljm
2016-07-21T21:06:50.000000Z
字数 538
阅读 1050
kernel
内存管理
在接触linux的时候,看到在x86架构下,linux的虚拟内存空间大小为4GB(2^32),内核空间为1GB,为了让内核访问物理地址大于1GB的内存空间,引入了高端内存这一概念,但是在x86_64架构下,高端内存就不需要了,对于这个说法我一直很困惑,直到今天才终于nong弄明白了这个问题。
Linux for AMD64 (x86_64) uses a 48-bit ("canonical mode") address space which is divided into two regions. The kernel's virtual address space is 128TB and the user virtual address space is also 128TB (thus the two together are a 48-bit address space, though that is NOT contiguous).
哈哈,是不是感觉瞬间顿悟了,因为在x86_64架构下,每个进程的虚拟地址空间大小为256TB,内核空间为128T,用户空间为128T,两者加起来即为256T,内核寻址空间达到了128T,也就自然不需要高端内存了。
参考资料:
1. quora