[关闭]
@ljm 2016-07-21T21:06:50.000000Z 字数 538 阅读 1050

linux在x86和x86_64架构下进程的虚拟内存空间

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注