(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?