GNU/Linux >> Linux の 問題 >  >> Linux

Linux と I/O 完了ポート?

IOCP とまったく同じものを探している場合、存在しないため見つかりません。

Windows は完了通知モデルを使用します (したがって、I/O Completion ポート)。何らかの操作を非同期で開始し、その操作が完了すると通知を受け取ります。

Linux アプリケーション (および他のほとんどの Unix 系アプリケーション) は、通常、準備完了モデルの通知を使用します。ソケットをブロックせずに読み書きできるという通知を受け取ります。次に、ブロックしない I/O 操作を行います。

このモデルでは、不要 非同期入出力。データはすぐにソケット バッファに/からコピーされます。

このためのプログラミング モデルはややこしいので、libevent のような抽象化ライブラリが存在します。より単純なプログラミング モデルを提供し、サポートされているオペレーティング システム間の実装の違いを抽象化します。

Windows にも通知モデル (select または WSAWaitForMultipleEvents) があり、以前に見たことがあるかもしれません。多数のソケットに拡張できないため、高性能ネットワーク アプリケーションには適していません。

Windows と Linux はまったく異なるオペレーティング システムです。あるシステムではうまくスケーリングできないものでも、別のシステムではうまく機能する場合があります。このアプローチは、実際には Linux で非常にうまく機能し、パフォーマンスは Windows の IOCP に匹敵します。


IOCP は、さまざまな UNIX プラットフォームで「非同期 I/O」と発音されます:

  • POSIX AIO が標準
  • カーネル AIO、epoll、io_uring は Linux 固有の実装のようです
  • Kqueue は *BSD および Mac OSX の実装です
  • Message Passing Interface (MPI) はハイ パフォーマンス コンピューティングのオプションです
  • 必須の Boost リファレンス - Boost.Asio

Linux
  1. WindowsとLinuxの相互運用性:Sambaの概要

  2. Windows10とMXLinuxをデュアルブートする方法

  3. Nova-agent(Linux)およびRackspaceエージェント(Windows)

  1. Windows10およびWSL2でLinuxファイルシステムにアクセスする方法

  2. C の Linux でノンブロッキング コンソール I/O を行うにはどうすればよいですか?

  3. Linuxで「中断できない」プロセスを停止するには?

  1. Linuxを使用してWindowsでpodmanを起動して実行する

  2. WindowsとLinuxの間にSSH接続を確立します

  3. Linux I/O レイテンシーのデバッグ