direct memory access
Suppose you must move a thousand boxes from the truck to the warehouse. With interrupt-driven I/O the manager (the CPU) carries each box personally, one at a time, even if a porter pings them per box. With direct memory access you hire a porter, point at the truck and the shelf, say 'move all thousand', walk away, and get a single tap on the shoulder when the entire job is done. DMA is a hardware helper — a DMA controller — that moves a whole block of data between a device and main memory by itself, while the CPU does other work.
Concretely, the CPU programs the DMA controller once: here is the source (or destination) device, here is the memory address to read from or write into, and here is the byte count. Then the CPU is free. The DMA controller takes turns on the bus with the CPU (this is called cycle stealing, since it borrows occasional bus cycles) and shuttles bytes directly between the controller's buffer and RAM, with no CPU instruction per byte. Only when the entire block is transferred does it raise a single interrupt to say 'done.' So a 64 KB disk read costs the CPU two things — programming the transfer and handling one final interrupt — instead of being involved in all 65536 bytes.
Why it matters: DMA is what makes high-bandwidth I/O practical. Without it, copying a large file or streaming gigabit network traffic would consume nearly all the CPU just shuffling bytes. With it, the CPU sets things up and steps aside. The honest caveats: DMA competes with the CPU for memory bandwidth (the bus is shared), and because the controller writes straight into RAM, the addresses must be carefully checked and protected — a buggy or hostile DMA-capable device writing to the wrong physical address is a real security concern, which is why modern systems add an IOMMU to police device memory access.
To read a 4 KB disk block: the CPU tells the DMA engine 'read this block into physical address 0x200000,' then runs other code. The DMA controller streams all 4096 bytes into RAM on its own and raises just one interrupt at the end.
One setup, one final interrupt — the controller, not the CPU, moves every byte.
DMA does not make the CPU faster; it removes the CPU from the byte-by-byte copy. The CPU is still interrupted once at the end, and the device still competes for the shared memory bus.