The OS has little to do with the calculation.  The CPU hardware is
doing it.  The processor's address logic uses registers which are
wider than 32 bits.  Just as you can add a 1-digit number to a 3-digit
number and get a 3-digit result, the widget that maps a process'
virtual address space to the hardware's physical address space can add
the content of a 32-bit register to the content of a 36-bit register
and get a 36-bit result.

(I'm ignoring the possibility of overflow, like adding 1 to 999 in
a 3-digit field.  With good management they can be avoided.)

Only a tiny bit of the OS kernel, and nothing in any process, needs to
know about physical memory.  The hardware is set up by that bit and
makes processes, and the rest of the kernel, think they each live in a
block of memory that starts at 0 and ends at, say, 3GB.  In physical
memory they live side-by-side (to oversimplify a bit).

For how it does that, track down a little story called The Paging Game.

-- 
Mark H. Wood, Lead System Programmer   mw...@iupui.edu
Asking whether markets are efficient is like asking whether people are smart.

Attachment: pgpjKSIiRF27q.pgp
Description: PGP signature

Reply via email to