multiplexación de E/S
Operación desacoplada: el servidor espera, el servidor procesa datos.
Cuando el cliente está inactivo (sin transmisión de datos), el servidor no espera y se cuelga directamente.
El servidor solo procesa la E/S del cliente activo (con transmisión de datos)
principio:
- El momento en que la tarjeta de red recibe los datos depende del remitente y de la ruta de transmisión, este retraso suele ser muy alto, del nivel de milisegundos (ms).
- Las aplicaciones procesan datos a nivel de nanosegundos (ns).
- Durante todo el proceso, el estado del kernel espera datos y el procesamiento de la pila de protocolos es un proceso relativamente lento. Durante tanto tiempo, el proceso en modo de usuario no tiene nada que hacer.
- Por lo tanto, es necesario desacoplar: si un cliente está inactivo, simplemente suspenda el cliente y deje que el servidor maneje otros clientes activos.
Realización técnica:
- Utilice un proceso de monitoreo dedicado para detectar si el cliente en la tabla está activo
- El servidor solo maneja clientes activos.
seleccionar
- Proporcione al kernel una tabla de detección de descriptores de archivos (hasta 1024), cada una de las cuales representa el descriptor de archivo de conexión de red correspondiente al cliente.
- El kernel devuelve una tabla de descriptores de archivos de red IO, que se establece en 1 cuando está activo (con transmisión de datos) y 0 cuando está inactivo.
- El usuario recorrerá la tabla de detección n veces [O (n)] para determinar si el IO correspondiente está activo y luego procesará el IO de red correspondiente.
Código relacionado
epoll
- El kernel asume el control y determina el estado activo del cliente correspondiente.
- El kernel devuelve todas las tablas de descriptores de archivos activos.
- Los usuarios manejan la red activa IO directamente [O(1)]
Código relacionado