Solution (source code)

= Solution

With <direct memory access>, a device can initiate memory transfers, so the processor is no longer the only <computer bus> master. Requests must be arbitrated to prevent conflicting transfers, and the processor may have to wait while the device owns a shared bus. The <operating system> must supply valid stable buffers and arrange safe completion before reusing them. On a noncoherent system, cached processor copies must be flushed or invalidated as appropriate so processor and device agree on data. These extra initiators also need suitable address and protection controls.