En informática , el control de bus es una característica admitida por muchas arquitecturas de bus que permite que un dispositivo conectado al bus inicie transacciones de acceso directo a memoria (DMA). También se lo conoce como DMA de primera parte , en contraste con el DMA de terceros , donde un controlador de DMA del sistema es quien realmente realiza la transferencia.
Algunos tipos de buses permiten que solo un dispositivo (normalmente la CPU o su proxy) inicie transacciones. La mayoría de las arquitecturas de bus modernas, como PCI , permiten que varios dispositivos se conviertan en maestros de bus porque esto mejora significativamente el rendimiento de los sistemas operativos de propósito general . Algunos sistemas operativos en tiempo real prohíben que los periféricos se conviertan en maestros de bus, porque el programador ya no puede arbitrar para el bus y, por lo tanto, no puede proporcionar una latencia determinista.
Si bien en teoría el dominio del bus permite que un dispositivo periférico se comunique directamente con otro, en la práctica casi todos los periféricos dominan el bus exclusivamente para realizar DMA a la memoria principal .
Si varios dispositivos pueden controlar el bus, es necesario que exista un esquema de arbitraje de bus para evitar que varios dispositivos intenten controlar el bus simultáneamente. Para ello, se utilizan varios esquemas diferentes; por ejemplo, SCSI tiene una prioridad fija para cada ID de SCSI. PCI no especifica el algoritmo que se debe utilizar, por lo que la implementación debe establecer las prioridades.