Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)

    **目录**
     1.         阻塞IO
     2.         非阻塞IO
     3.         信号驱动IO
     4.         异步IO  (同步概念)
     5.         select“多路转接”IO(篇幅所限放置下一篇博客中,持续更新哦)

Antes de comenzar a describir, comprenda este concepto.
Dos comportamientos que ocurren esencialmente durante el proceso de E / S son "esperar" y "copiar", esperar a que se complete la preparación de datos y copiar desde el kernel al espacio del usuario.
Imagine que mucho tiempo perdido en el proceso de IO está esperando a ser consumido, por el contrario, para mejorar la eficiencia de IO, la idea central es encontrar una manera de minimizar el "tiempo de espera".

Bloqueo de E / S

  • Iniciar una operación funcional Cuando se requiera la adquisición de datos, si el kernel no prepara los datos, esperará hasta que los datos estén listos antes de continuar;
  • Todos los enchufes, el método predeterminado es
    Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)
    bloquear E / S sin bloqueo
  • Cuando se inicia una operación funcional y se solicitan datos, el kernel indica que los datos no se han preparado, y la interfaz de llamada al sistema ejecutada regresará inmediatamente y reportará un error de respuesta (generalmente EWOULDBLOCK)
  • La E / S sin bloqueo reduce el tiempo de espera, pero no tiene mucho sentido cuando regresa sin éxito. Por lo tanto, el programador general llamará repetidamente a la interfaz sin bloqueo (el propósito es intentar repetidamente obtener el descriptor de archivo para leer y escribir Este es el método de "sondeo", que es un gran desperdicio de utilización de la CPU;

Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)

Unidad de señal IO

  • La E / S impulsada por señales, como su nombre indica, introduce un modo de procesamiento de señales en el modo de procesamiento de E / S
  • Iniciar una operación funcional, al solicitar la obtención de datos, no prestar atención luego de enviar la solicitud.Cuando el kernel esté listo para preparar los datos, envíe una señal SIGIO para notificar el proceso para completar las siguientes operaciones IO
  • Tenga en cuenta que lo que SIGIO supervisa aquí es "el kernel prepara los datos o no", no el segundo comportamiento de "copiar"
    Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)
    E / S asíncronas.
  • Inicie una operación funcional, cuando necesite solicitar datos, no preste atención después de enviar la solicitud.Cuando el kernel prepara los datos + se completa la copia de datos, notifique al proceso y realice las operaciones IO posteriores.
  • Lo que necesita atención es la diferencia entre esta y la E / S impulsada por señales, que es si la copia de los datos ocurre antes de la "notificación";

Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)

Concepto asíncrono / síncrono

  • asincrónico:
    • Para completar una función, emitir una llamada y regresar después de que se emitió la llamada. De acuerdo con el estado de la persona que llama, se notifica a la persona que llama y el resultado real del procesamiento de la llamada se puede procesar en este momento.
      • Sincronizar
      • Para completar una función, realice una llamada, espere a que el estado llamado esté listo, luego continúe; de ​​lo contrario, espere para siempre

En este punto, creo que todo el mundo está muy confundido, entonces, ¿"asincrónico / sincrónico" y "bloqueo / no bloqueo" no son lo mismo?
Respuesta: Bloqueo y no bloqueo, enfatizando principalmente si la operación regresa inmediatamente;
asíncrono y sincrónico, enfatizando principalmente el tiempo de finalización de la función , enfocándose en el "mecanismo de comunicación de mensajes".
Aquí hay un ejemplo clásico para ayudar en la comprensión:
mecanismo de comunicación asíncrono :
Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)
asincrónico y sincrónico La plantilla estándar se ve así:

La llamada sincronización significa que cuando se emite una llamada , la llamada no regresa hasta que no se obtiene el resultado . Pero una vez que la llamada regresa, obtienes el valor de retorno. En otras palabras, la persona que llama espera activamente el resultado de esta llamada .
La inducción es lo contrario, la llamada después de emitir esta llamada se devuelve directamente, por lo que no se devuelven resultados. En otras palabras, cuando se emite una llamada de procedimiento asincrónica, la persona que llama no obtendrá el resultado de inmediato. En cambio, después de que se emite la llamada , la persona que llama informa a la persona que llama a través del estado y la notificación, o maneja la llamada a través de una función de devolución de llamada.

Bloqueo y no bloqueo:

                  阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

Modelo de E / S típico en Linux + modelo de multiplexación selecto (concepto)

Debido a las limitaciones de espacio, el modelo selecto de E / S multiplexadas, la encuesta, el modelo epollIO y el código de comunicación TCP correspondiente se vincularán
a los próximos blogs; ¡ todos serán claros aquí! Jaja, gracias por mirar;

Supongo que te gusta

Origin blog.51cto.com/14632688/2663786
Recomendado
Clasificación