Red de conocimiento informático - Conocimiento del nombre de dominio - Características y comparaciones de cinco modelos insumo-producto de productos secos

Características y comparaciones de cinco modelos insumo-producto de productos secos

Para garantizar la seguridad del sistema operativo, la memoria se divide en espacio del kernel y espacio del usuario. Los procesos en el espacio del kernel pueden acceder al hardware para realizar operaciones como IO, mientras que los procesos en el espacio del usuario solo pueden acceder a recursos del sistema como IO a través de llamadas al sistema.

Para el acceso IO (por ejemplo, lectura), los datos se copiarán primero en el búfer del kernel del sistema operativo y luego en el espacio de direcciones de la aplicación.

Entonces, cuando ocurre una operación de lectura, pasará por dos etapas.

Es precisamente debido a estas dos etapas que el sistema Linux ha producido los siguientes cinco modos de red:

En Linux, todos los sockets están bloqueados de forma predeterminada. El proceso es como se muestra a continuación. Como se muestra:

El proceso llama a la llamada al sistema recvfrom para leer los datos, lo que significa que si los datos no han llegado, el proceso entrará en el estado de bloqueo. Cuando llegan los datos, se copian al kernel y luego se copian del kernel al espacio del usuario, para que el proceso del usuario pueda fluir sin problemas.

Características: El proceso se bloqueará en ambas etapas de ejecución de IO.

Al ejecutar una llamada al sistema io sin bloqueo, si los datos en el kernel no están listos, regresará directamente sin bloquearse. A través del proceso de consulta continua, los datos no se copian al espacio del usuario hasta que estén listos en el kernel. Durante el proceso de copia, el proceso aún está bloqueado y todas las IO sin bloqueo son IO sincrónicas.

Características: El proceso necesita preguntar constantemente al núcleo si los datos están listos.

Un solo proceso maneja múltiples IO de conexión de red y utiliza tres llamadas al sistema select\poll\epoll para sondear continuamente todas las conexiones, notificar al proceso si los datos llegan al kernel y copiar los datos a la memoria del usuario. medio.

Cuando se llama a select, el proceso entrará en un estado de bloqueo hasta que lleguen los datos.

Este diagrama no se diferencia del bloqueo de IO, incluso usando una llamada al sistema adicional.

Pero su ventaja es que puede monitorear múltiples conexiones IO al mismo tiempo.

Entonces, si el número de conexiones no es muy alto, el rendimiento de un servidor web que usa select/epoll no es necesariamente mejor que el de un servidor web que usa IO de bloqueo y subprocesos múltiples. La ventaja de IO multiplexada no es que puede manejar una sola conexión más rápido, sino que puede manejar más conexiones.

La IO asincrónica en Linux rara vez se usa y su proceso es el siguiente:

Después de iniciar la operación de lectura, el proceso regresa inmediatamente y todo el proceso de IO no generará ningún bloques. El kernel esperará a que los datos estén listos y luego los copiará a la memoria del usuario. Cuando todo esto se complete, el kernel enviará una señal al proceso del usuario indicándole que la operación de lectura se ha completado.

Llamar a blocking io bloqueará el proceso hasta que se complete la operación.

IO sin bloqueo regresará inmediatamente cuando el kernel prepare los datos.

Solo la IO asincrónica es IO asincrónica.

Los otros tres tipos: IO de bloqueo, IO sin bloqueo y IO multiplexada son todos sincrónicos.

Esto se debe a que los otros tres IO tienen etapas de bloqueo de proceso durante la ejecución de operaciones de IO reales, mientras que el proceso de IO asíncrono no se bloquea durante todo el proceso. La IO sin bloqueo también se bloquea cuando los datos del kernel se preparan y copian en el espacio del usuario, por lo que también es una IO sincrónica.

Modo Linux IO y descripción detallada de select, poll y epoll