Cinco modelos de E / S de programación de red

Hay cinco modelos de E / S en la programación de redes. Hoy hablaremos sobre los principios y diferencias de estos cinco modelos.

1. Modelo de bloqueo de E / S.

El diagrama de comunicación del modelo de bloqueo de E / S es el siguiente:

Diagrama de comunicación del modelo de bloqueo de E / S

Cuando el usuario llama a la llamada al sistema recvfrom, el kernel comienza a preparar los datos. Para las E / S de la red, muchas veces los datos no han llegado, en este momento debe esperar a que lleguen suficientes datos. En este momento, el proceso del usuario se bloqueará. Cuando los datos estén listos, copiará los datos del kernel a la memoria del usuario y luego devolverá el resultado. El proceso del usuario se desbloqueará en este momento y se ejecutará nuevamente. En el modelo de bloqueo de E / S, el proceso se bloquea y se suspende sin consumir recursos de la CPU y responde a cada operación de manera oportuna. Es adecuado para el desarrollo de aplicaciones de red con poca concurrencia. Para aplicaciones con una gran cantidad de simultaneidad, es necesario asignar un proceso de procesamiento para cada solicitud, y la sobrecarga del sistema es alta.

2. Modelo de E / S sin bloqueo.

El diagrama de comunicación del modelo de E / S sin bloqueo es el siguiente:

Diagrama esquemático de la comunicación del modelo de E / S sin bloqueo

En el modelo de E / S sin bloqueo, cuando el proceso del usuario emite una operación de lectura, si los datos en el kernel no están listos, no bloqueará el proceso del usuario, sino que devolverá inmediatamente un error. Desde la perspectiva del proceso del usuario, se inicia una operación de lectura sin esperar, pero se obtiene un resultado de inmediato. Cuando el proceso del usuario juzga un error y sabe que el kernel aún no ha preparado los datos, envía la operación de lectura nuevamente. Una vez que el kernel ha preparado los datos y ha recibido la llamada del proceso del usuario, copiará los datos a la memoria del usuario inmediatamente y regresará. . En este modelo, el proceso del usuario necesita preguntar constantemente si el kernel está listo, consume recursos de la CPU y es adecuado para el desarrollo de aplicaciones de red que tienen una pequeña cantidad de simultaneidad y no requieren una respuesta oportuna.

3. Modelo de multiplexación de E / S.

El diagrama esquemático del modelo de E / S multiplexadas es el siguiente:

Diagrama esquemático de la comunicación del modelo de E / S multiplexadas

En el modelo de E / S multiplexadas, las E / S de múltiples procesos se pueden registrar en un multiplexor (Selector). Cuando el proceso del usuario llama al Selector, si todas las E / S monitoreadas por el Selector están en el búfer del kernel Si no hay datos legibles, el proceso de llamada de selección se bloqueará, y cuando cualquier E / S tenga datos en el búfer del kernel, la llamada de selección regresará, y luego el proceso de llamada de selección puede iniciar la lectura nuevamente por sí mismo o notificar a otro proceso E / S, lea los datos preparados en el kernel.

En comparación con el modelo sin bloqueo, el modelo de multiplexación requiere dos llamadas al sistema (recvfrom y select), pero la ventaja de Selector es que puede manejar múltiples conexiones a la vez. La ventaja es obvia cuando hay muchas conexiones, pero una sola conexión No se puede procesar más rápido. El modelo de multiplexación es adecuado para el desarrollo de servidores de alta concurrencia.

4. Modelo de E / S controlado por señales.

El diagrama de comunicación del modelo de E / S controlado por señales es el siguiente:

 

Diagrama esquemático del modelo de E / S controlado por señales

El modelo impulsado por señales significa que el proceso registra una función de procesamiento de señales con el kernel, y luego el proceso del usuario regresa sin bloquear. Cuando los datos del kernel están listos, devuelve una señal al proceso, y el proceso del usuario llama a E / S para leer los datos en la función de procesamiento. De hecho, el proceso de copiar el kernel de E / S al proceso del usuario aún está bloqueado. Este modo no logra un bloqueo real. Es un pseudoasincrónico y no se usa comúnmente en la práctica.

5. Modelo de E / S asíncronas.

El diagrama de comunicación del modelo de E / S asíncronas es el siguiente:

Diagrama esquemático del modelo de comunicación de E / S asíncrona

Después de que el proceso del usuario inicia la operación aio_read, pasa los tres parámetros del mismo descriptor, puntero de búfer, tamaño de búfer y desplazamiento de archivo al kernel como leído, y le dice al kernel cómo notificarnos cuando se complete toda la operación, y podemos comenzar a hacer otras cosas inmediatamente Desde la perspectiva del kernel, cuando recibe un aio_read, regresará inmediatamente, por lo que no bloqueará el proceso del usuario, el kernel esperará a que se complete la preparación de los datos y luego copiará los datos a la memoria del usuario. Después de que todo esto esté completo, el kernel enviará una señal al proceso del usuario para decirle que la operación aio_read está completa.

El mecanismo de E / S asíncrona es: decirle al kernel que inicie una operación, y dejar que el kernel nos notifique cuando se complete toda la operación, se da cuenta de la operación asíncrona real, es un modelo asíncrono real, adecuado para aplicaciones de alto rendimiento y alta concurrencia.

Supongo que te gusta

Origin blog.csdn.net/wzs535131/article/details/107599887
Recomendado
Clasificación