Dma and Drivers — When Hardware Moves Data Itself
A friendly explainer of direct memory access — why it is fast, what drivers do to enable it, and how it is kept safe.
A friendly explainer of direct memory access — why it is fast, what drivers do to enable it, and how it is kept safe.
Without direct memory access, every byte that moves between a device and main memory passes through the processor. That is fine for small amounts of data but a poor use of the processor for bulk transfers.
Dma lets the device move data directly. The driver sets up a transfer description in memory and tells the device "go do this." The processor is free to do other work until the device signals completion.
The driver allocates a buffer, gets its physical address, and hands the address to the device. The device reads or writes the buffer using its own bus master capability. When done, it signals an interrupt — usually Msi or Msi-X on modern hardware.
The driver then maps the result back into the requesting process, completes the request, and the data is delivered. For high-throughput devices this happens millions of times per second.
Modern systems include an input-output memory management unit. It sits between devices and main memory, ensuring that a device can only read and write addresses the operating system has explicitly granted it. This neutralises a whole class of accidental and deliberate overreach.
For driver developers it adds a small amount of bookkeeping. For users it is mostly invisible — but it is the reason that recent systems handle the most aggressive Dma scenarios without trouble.
Hand-picked articles that pair well with this one.
Plain-English explainers, fix walkthroughs, and concept articles for every part of your system.