GNU/Linux >> Tutoriales Linux >  >> Linux

¿Linux y puertos de finalización de E/S?

Si está buscando algo exactamente como IOCP, no lo encontrará porque no existe.

Windows usa un modelo de notificación al finalizar (por lo tanto, I/O Finalización Puertos). Inicia alguna operación de forma asincrónica y recibe una notificación cuando la operación se ha completado.

Las aplicaciones de Linux (y la mayoría de las similares a Unix) generalmente usan un modelo de notificación cuando está listo. Recibe una notificación de que se puede leer o escribir en el socket sin bloqueo. Luego, realiza la operación de E/S, que no se bloqueará.

Con este modelo, no necesita E/S asíncrona. Los datos se copian inmediatamente dentro o fuera del búfer del socket.

El modelo de programación para esto es un poco complicado, por eso existen bibliotecas de abstracción como libevent. Proporciona un modelo de programación más simple y abstrae las diferencias de implementación entre los sistemas operativos compatibles.

También hay una notificación en el modelo listo en Windows (seleccione o WSAWaitForMultipleEvents), que puede haber visto antes. No puede escalar a una gran cantidad de sockets, por lo que no es adecuado para aplicaciones de red de alto rendimiento.

No dejes que eso te desanime:Windows y Linux son sistemas operativos completamente diferentes. Algo que no escala bien en un sistema puede funcionar muy bien en el otro. Este enfoque en realidad funciona muy bien en Linux, con un rendimiento comparable al de IOCP en Windows.


IOCP se pronuncia "E/S asíncrona" en varias plataformas UNIX:

  • POSIX AIO es el estándar
  • Kernel AIO, epoll e io_uring parecen ser implementaciones específicas de Linux
  • Kqueue es la implementación de *BSD y Mac OSX
  • Message Passing Interface (MPI) es una opción para la informática de alto rendimiento
  • referencia obligatoria de Boost - Boost.Asio

Linux
  1. Cómo acceder a los sistemas de archivos de Linux en Windows 10 y WSL 2

  2. Interoperabilidad de Windows y Linux:una mirada a Samba

  3. Cómo iniciar dualmente Windows 10 y MX Linux

  4. Agente Nova (Linux) y Agente Rackspace (Windows)

  5. Depuración de la latencia de E/S de Linux

Cómo arrancar dualmente Kali Linux y Windows 10

Cómo ver puertos TCP y UDP en tiempo real

Cómo hacer un servidor TeamSpeak en Linux, Windows y macOS

10 Comando iostat de Linux para informar estadísticas de CPU y E/S

Cómo hacer un USB de arranque múltiple en Linux y Windows

Compartir archivos entre Linux Mint y Windows 10