(在 Linux 64 位上测试)
如果您查看/proc/<pid>/maps
(作为系统中当时运行的任何进程的进程标识符)的内容,您将看到分配给进程的虚拟空间在 and 之间555xxxxxxxxx
,7FFxxxxxxxxx
而不是在000000000000
and之间FFFFFFFFF000
。为什么是这样?
我已经了解,一个进程的虚拟空间是 64 位系统中的 48 位(在《计算机体系结构:定量方法》一书中阅读。Hennessy 和 Patterson。第 118 页),但如果它只使用它55Fxxxxxxxxx
和7FFxxxxxxxxx
它之间的空间意味着仅使用或多或少的 45 位。为什么用户空间比我想象的要小?