Main Memory: Allocation, Linking & Segmentation

a physical address

If a logical address is a page number in a script, a physical address is the actual seat number in the actual theatre — the real, concrete place. A physical address is the number that travels on the memory bus to the RAM chips and selects one specific storage cell in the hardware. It is where a byte truly lives.

Concretely, physical addresses run from 0 up to the total amount of installed RAM (minus one), and they are unique across the whole machine: there is exactly one byte at physical address 100000. The memory unit — the actual chips — only ever sees physical addresses; it has no idea what a logical address is. So every memory access a program makes must first have its logical address translated into a physical address before the chips can respond. In the base-register scheme this is one addition; with paging it is a table lookup, but the destination is always a physical address.

Why it matters: keeping physical addresses hidden from programs is what makes safe sharing possible. A program never names a physical address directly, so it cannot deliberately or accidentally reach into another program's real memory; only the OS and the address-translation hardware deal in physical addresses. This is also why the same program can be loaded at a different physical spot every time it runs without any change to the program itself.

A machine has 8 GB of RAM, so its physical addresses run from 0 to 8 x 2^30 minus 1. When the running program asks for logical address 1000 and the base register holds 90000, the chips actually receive physical address 91000.

The chips see only the translated physical address, never the logical one.

A common confusion: the value 1000 in 'load address 1000' is logical, not physical. The physical address is whatever it becomes after translation, and the program usually never sees it.

Also called
real addressreal memory address真實位址