Conceptual
Login

Bus Addresses, Physical Addresses and Virtual Addresses

The same byte of memory has up to three different names: the virtual address your code holds, the physical address on the memory chips, and the bus address a device must put on the wire to reach it. They are often different numbers, because translation hardware sits between them, and on many systems a chip called an input output memory management unit remaps device accesses as well. Hand a device a pointer from your own code instead of the bus address the system gives you, and the device will happily scribble on whatever really lives at that number.

Questions this Concept answers

  • Why is the pointer your driver code holds usually the wrong number to hand to a device?