Memory Manager
The 32-bit versions of Windows are able to address 232 bytes (4 GB) of
memory by default. Windows splits that memory, allocating 2 GB of memory
to the kernel and up to 2 GB of memory to each application’s private
address space. This is done in order to provide protection for both the
operating system and the applications. The kernel mode functions get 2
GB so that they will have enough room to perform mandatory processes
without running out of space. User mode applications therefore cannot
address memory in the kernel mode space and accidentally corrupt kernel
mode memory.
Each application can also utilize up to 2 GB of memory. This is true
regardless of the number of applications on the server and despite the
operating system’s ability to natively recognize only 4 GB of total
memory. If the total memory requirements of all applications exceed 4
GB, the memory manager uses a paging file to substitute for RAM. This
process is described in the following paragraphs.
The memory manager is responsible for allocating and tracking memory
assignments for both the kernel and applications. The memory manager
translates virtual memory addresses used by the operating system and
applications to actual physical memory locations. The translation of
virtual memory to physical memory is transparent to the applications.
User mode processes are never able to directly write to real memory and
never actually know where their data resides. A user mode process can
request a block of memory and write to it. The data written to the
memory location might be written to real memory, or might be written to
a paging file. A paging file (also known as a swap file) is a file on
the hard disk that the memory manager uses to hold data that does not
fit in memory. The memory manager moves data from the paging file to
memory as needed and moves data from memory to the paging file to make
room for new data.
[end quote]
http://technet.microsoft.com/en-us/library/cc786709(WS.10).aspx
All user applications use Virtual Addresses, they don't translate
anything to physical addresses and they don't know where their code and
data actually is! And that applies even if you run without a pagefile,
the applications will still be living in the Virtual Addressing realm,
the Virtual Memory Manager will translate the VAS to RAM addresses.
You're not in Kansas any more, Dorothy. And Windows XP doesn't run on
x86 processors with Local Descriptor Tables! Maybe it's time that *you*
did a bit of reading:
http://msdn.microsoft.com/en-us/library/ms810616.aspx
The Virtual-Memory Manager in Windows NT
John