Address Translation
Compilers produce code in which all memory references are logical addresses.
Physical addresses are calculated on the fly as the instructions are executed.
Hardware support is needed. For example:
- Base register and bound register
- Each process can only access memory within its process image.