GNU/Linux >> Tutoriels Linux >  >> Linux

Linux et ports de complétion d'E/S ?

Si vous cherchez quelque chose exactement comme IOCP, vous ne le trouverez pas, car il n'existe pas.

Windows utilise un modèle de notification à l'achèvement (d'où I/O Completion ports). Vous démarrez une opération de manière asynchrone et recevez une notification lorsque cette opération est terminée.

Les applications Linux (et la plupart des autres applications similaires à Unix) utilisent généralement un modèle de notification prêt à l'emploi. Vous recevez une notification indiquant que le socket peut être lu ou écrit sans blocage. Ensuite, vous effectuez l'opération d'E/S, qui ne bloquera pas.

Avec ce modèle, vous n'avez pas besoin E/S asynchrones. Les données sont immédiatement copiées dans / hors du tampon de socket.

Le modèle de programmation pour cela est un peu délicat, c'est pourquoi il existe des bibliothèques d'abstraction comme libevent. Il fournit un modèle de programmation plus simple et élimine les différences d'implémentation entre les systèmes d'exploitation pris en charge.

Il existe également un modèle de notification prêt à l'emploi dans Windows (select ou WSAWaitForMultipleEvents), que vous avez peut-être déjà consulté. Il ne peut pas évoluer vers un grand nombre de sockets, il n'est donc pas adapté aux applications réseau hautes performances.

Ne vous laissez pas décourager - Windows et Linux sont des systèmes d'exploitation complètement différents. Quelque chose qui ne s'adapte pas bien sur un système peut très bien fonctionner sur l'autre. Cette approche fonctionne en fait très bien sous Linux, avec des performances comparables à IOCP sous Windows.


IOCP se prononce "E/S asynchrones" sur diverses plates-formes UNIX :

  • POSIX AIO est la norme
  • Kernel AIO, epoll et io_uring semblent être des implémentations spécifiques à Linux
  • Kqueue est l'implémentation *BSD et Mac OSX
  • Message Passing Interface (MPI) est une option pour le calcul haute performance
  • référence Boost obligatoire - Boost.Asio

Linux
  1. Comment accéder aux systèmes de fichiers Linux dans Windows 10 et WSL 2

  2. Interopérabilité Windows et Linux :un regard sur Samba

  3. Comment effectuer un double démarrage de Windows 10 et de MX Linux

  4. Agent Nova (Linux) et agent Rackspace (Windows)

  5. Débogage de la latence d'E/S Linux

Comment double-booter Kali Linux et Windows 10

Comment surveiller les ports TCP et UDP en temps réel

Comment créer un serveur TeamSpeak sous Linux, Windows et macOS

10 Commande Linux iostat pour rapporter les statistiques du CPU et des E/S

Comment créer une clé USB multiboot sous Linux et Windows

Partage de fichiers entre Linux Mint et Windows 10