Other benefits of 64-bit OS apart from memory expansion?
Solution 1:
- For x86-64 compared to IA-32, there is twice as many registers, which allows compilers to generate better code.
- On most operating systems, the 64-bit ABI allows the generation of better code than the 32-bit ABI (by passing parameters on registers instead of on the stack, for instance).
- Some things which are extensions on IA-32 are always present on x86-64, so programs can use them without needing to code a fallback (for instance a certain level of SSE).
- Last but not least, 64-bit
time_t
, which will be more and more important as we get near 2038.
Solution 2:
In fact, you can run more than 3 GB (or more than 4 GB) of RAM on 32-bit operating systems. PAE provides a means for an x86 or x86-64 processor to access up to 64 GB of memory even on a 32-bit operating system. It's not quite as straight-forward as just running a 64-bit OS, mind you. The memory is paged, and so each process is still limited to a maximum of 4 GB. Additionally, not all operating systems support this. Some versions of 32-bit Windows made use of PAE, but unfortunately, so they could support badly written drivers, most versions limited support to 4 GB of memory. For example, Windows XP and Windows Vista are limited to 4 GB (and, as noted, tend to only expose around 3 GB). On the other hand, Windows Server 2008 Enterprise, Datacenter supports 64 GB of RAM.
The Linux kernel supported more than 4 GB as part of the 2.6 kernel. However, the Linux distributions sometimes make you install a "server" kernel image in order to make use of this feature.