¿Cuál es la explicación de las razones por las cuales el IO programado no funciona muy bien cuando el dispositivo IO es un disco duro o una pantalla gráfica?

Decir que no “funciona muy bien” no es muy descriptivo y es más que un poco engañoso. Ambos se pueden implementar fácilmente de manera sencilla utilizando E / S programadas (PIO) de una manera relativamente sencilla.

El problema se reduce a uno de rendimiento. La mayoría de las arquitecturas PIO se basan en el modelo de arquitectura de bus de carga / almacenamiento básico: la CPU emite una operación a través de un PIO, va al dispositivo, el dispositivo hace algo y devuelve un resultado. Dependiendo de los detalles de la arquitectura, la CPU (o el núcleo) puede bloquearse mientras espera que el dispositivo responda. Esto es ineficiente porque es totalmente sincrónico.

Un enfoque más eficiente es una interfaz asincrónica transmitida, a veces descrita como una interfaz de paso de mensajes. Esto permite que la CPU y el dispositivo trabajen de forma asíncrona entre sí, logrando así un mayor rendimiento.