(Tested on Linux 64 bits)
If you watch the content of /proc/<pid>/maps
(being the process identifier of any process running in that moment in your system) you will see that the virtual space assigned to the process is between 555xxxxxxxxx
and 7FFxxxxxxxxx
, instead of being between 000000000000
and FFFFFFFFF000
. Why is this?
I have understood that the virtual space for a process is 48 bits in a 64-bit system (read in the book Computer Architecture: A quantitative aproach. By Hennessy and Patterson. Page 118), but if it's using only the space between 55Fxxxxxxxxx
and 7FFxxxxxxxxx
it means that is only using, more or less, 45 bits. Why is user space smaller than what I thought?