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.
pgpjKSIiRF27q.pgp
Description: PGP signature