On Thu, Feb 13, 2014 at 07:36:43PM +0100, Jonas Otter wrote:
On Thu, 13 Feb 2014 12:19:35 +0000, Peter Corlett
<abuse at cabal.org.uk> wrote:
Do remember that the amount of memory supported
in a system depends on the
size of the physical and virtual address spaces. The virtual address space
corresponds to the size of a pointer, and the physical address space
corresponds to the number of pins actually coming out of the CPU package.
Paging hardware allows the physical address space to be larger than virtual.
Virtual memory and paging was originally invented to allow the *virtual*
address space to be larger than the physical address space.
And indeed in the now-common case of running 64 bit code on an x86-64 CPU, this
is once more the case.
However, there are cases -- particularly interesting cases for this list! --
where one is running old binaries on an emulation submode on a newer CPU, and
the situation I described applies. A non-x86 example would be running 6502 code
on a 65816.
It does work both ways of course, but the original
idea was in some old
machines of the 1950s to allow extending the address space by using disk
storage. The Atlas, for example.
Swapping/paging to disk is indeed one of the oldest and most common
applications of paging/segmentation hardware. It is however not the only thing
it's good for.