Los dispositivos de entrada y salida permiten la comunicación del sistema con el exterior, cada uno de ellos se conecta a través de una interfaz (controlador) y los hay de distintos tipos:
En esta alternativa es el procesador el encargado de monitorear todos los dispositivos de entrada/salida, por lo que cada cierto tiempo el procesador debe consultar a los diferentes dispositivos cual es su estado y en caso de que requieran transferir información a la memoria principal, es el procesador quien debe ocuparse de atender esos pedidos.
Esta implementación tiene como desventaja que el procesador pierde muchos ciclos de reloj consultando el estado de los dispositivos y realizando transferencias, por lo que si no hay nada para transferir se desperdicio tiempo.
En esta alternativa es el dispositivo el que debe informarle al procesador su cambio de estado mediante interrupciones, esto se logra gracias a que el procesador tiene pines o entradas para tal fin, cuando el dispositivo quiere hacer algún tipo de transferencia, le avisa mediante un impulso electrónico al procesador para que el mismo interrumpa lo que esta haciendo y se ocupe de realizar la transferencia a la memoria principal.
Si bien esta implementación es mejor que la E/S programada ya que el procesador no se ocupa mas de consultar el estado de los dispositivos, tiene como principal desventaja que todavía debe ocuparse de transferir la información desde el dispositivo hasta la memoria principal.
El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de componentes de una computadora acceder de forma directa a la memoria principal del sistema para leer o escribir sin intervención del procesador.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. En lugar de que la CPU inicie la transferencia, esta se lleva a cabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna más rápida. Tal operación no ocupa al procesador y, por ende, este puede efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos recursos.
Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí se necesita el bus del sistema (tanto bus de datos como bus de direcciones), por lo que existen diferentes estrategias para regular su uso, permitiendo así que no quede totalmente acaparado por el controlador DMA (Recordar que el procesador también hace uso del bus para acceder a memoria principal)
Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas gráficas y tarjetas de sonido. DMA es una característica esencial en todos los ordenadores modernos.
Esta implementación trae como ventaja que la CPU ya no interviene en la transferencia de datos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones pero trae como desventaja que deben implementarse mecanismos para invalidar la cache del procesador ya que si la cache contiene un dato que un dispositivo de E/S esta actualizando en la memoria principal, el dato que esta en la cache paso a ser incorrecto.
Tener en cuenta que el diagrama esta simplificado ya que el bus esta compuesto por el bus de datos, de direcciones y de control