GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ports für Linux und E/A-Abschluss?

Wenn Sie genau nach IOCP suchen, werden Sie es nicht finden, weil es nicht existiert.

Windows verwendet ein Benachrichtigungsmodell (daher I/O Completion Häfen). Sie starten einen Vorgang asynchron und erhalten eine Benachrichtigung, wenn dieser Vorgang abgeschlossen ist.

Linux-Anwendungen (und die meisten anderen Unix-Äquivalente) verwenden im Allgemeinen ein Notify-On-Ready-Modell. Sie erhalten eine Benachrichtigung, dass der Socket ohne Blockierung gelesen oder beschrieben werden kann. Dann führen Sie die E/A-Operation durch, die nicht blockiert.

Bei diesem Modell brauchen Sie es nicht asynchrone E/A. Die Daten werden sofort in / aus dem Socket-Puffer kopiert.

Das Programmiermodell dafür ist etwas knifflig, weshalb es Abstraktionsbibliotheken wie libevent gibt. Es bietet ein einfacheres Programmiermodell und abstrahiert die Implementierungsunterschiede zwischen den unterstützten Betriebssystemen.

Es gibt auch ein Benachrichtigungsmodell in Windows (select oder WSAWaitForMultipleEvents), das Sie sich vielleicht schon einmal angesehen haben. Es kann nicht auf eine große Anzahl von Sockets skaliert werden und ist daher nicht für Hochleistungsnetzwerkanwendungen geeignet.

Lassen Sie sich davon nicht abschrecken – Windows und Linux sind völlig unterschiedliche Betriebssysteme. Etwas, das auf einem System nicht gut skaliert, kann auf dem anderen sehr gut funktionieren. Dieser Ansatz funktioniert tatsächlich sehr gut unter Linux, mit einer Leistung, die mit IOCP unter Windows vergleichbar ist.


IOCP wird auf verschiedenen UNIX-Plattformen als "asynchronous I/O" ausgesprochen:

  • POSIX AIO ist der Standard
  • Kernel AIO, epoll und io_uring scheinen Linux-spezifische Implementierungen zu sein
  • Kqueue ist die *BSD- und Mac OSX-Implementierung
  • Message Passing Interface (MPI) ist eine Option für High Performance Computing
  • obligatorische Boost-Referenz - Boost.Asio

Linux
  1. Zugriff auf Linux-Dateisysteme in Windows 10 und WSL 2

  2. Windows- und Linux-Interoperabilität:Ein Blick auf Samba

  3. So starten Sie Windows 10 und MX Linux dual

  4. Wie führen Sie nicht blockierende Konsolen-E/A unter Linux in C durch?

  5. Wie stoppe ich einen „unterbrechungsfreien“ Prozess unter Linux?

So starten Sie Kali Linux und Windows 10 dual

So überwachen Sie TCP- und UDP-Ports in Echtzeit

So erstellen Sie einen TeamSpeak-Server unter Linux, Windows und macOS

10 Linux iostat Befehl zum Melden von CPU- und E/A-Statistiken

So erstellen Sie einen Multiboot-USB in Linux und Windows

Freigabe von Dateien zwischen Linux Mint und Windows 10