Bus arbitration is the process of determining which device will become the bus master when multiple devices request access to the bus simultaneously. There are two main types of bus arbitration: centralized arbitration and distributed arbitration. Centralized arbitration uses a single bus controller to manage arbitration, while distributed arbitration allows each device to perform self-arbitration without a central controller. Bus arbitration is needed to avoid conflicts when multiple devices like the CPU and DMA controllers need simultaneous access to the bus. Direct memory access (DMA) allows high-speed transfer of large blocks of data between peripherals and memory without using the CPU.