La siguiente figura muestra un subsistema típico de un dispositivo.
Dev maneja el flujo de datos desde y hasta los procesos de aplicación. La interfase del hardware se maneja por procesos de drivers individuales. Los datos fluyen entre Dev y sus drivers a través de un conjunto de colas de memoria compartida para cada dispositivo terminal. Ya que se usan colas de memoria compartida, es necesario que Dev y todos sus drivers residan en el mismo CPU, esto incrementa la performance.
Se usan tres colas para cada dispositivo. En cada cola se implementa FIFO y una estructura de control es asociada con cada cola. Los datos recibidos se ponen en la cola de entrada por el driver y sólo son consumidos por Dev cuando la aplicación procesa los datos demandados.
Los tamaños de todas estas colas son configurables por el administrador del sistema; la única restricción es que la suma de las tres colas no puede exceder los 64K. Los valores por defecto normalmente son más que adecuados para manejar la mayoría de las configuraciones del hardware.
Control de Dispositivos
Los drivers de dispositivos colocan los datos recibidos en la cola de entrada o los consumen y transmiten los datos de la cola de salida. Dev decide cuando será suspendida la transmisión de salida, y como realizar el eco de los datos.
Para asegurar una buena respuesta interactiva a eventos de entrada, Dev debe correr a una prioridad bastante alta. Los drivers son procesos como cualquier otro proceso en QNX; ellos pueden ejecutarse a prioridades diferentes según la naturaleza del hardware que sirvan
.