ゼロコピー通信(ぜろこぴーつうしん)
最終更新:2026/4/27
ゼロコピー通信は、データをアプリケーションとカーネルの間で直接転送し、中間的なコピーを回避することで、データ転送の効率を向上させる技術である。
別名・同義語 直接データ転送DMA転送
ポイント
この技術は、特にネットワーク通信やファイルI/Oにおいて、CPU負荷の軽減とパフォーマンス向上に貢献する。DMA(Direct Memory Access)と組み合わせて利用されることが多い。
ゼロコピー通信の概要
ゼロコピー通信は、従来のデータ転送方法における非効率性を解消するために開発された技術です。通常、アプリケーションからカーネルへデータを送信する際、データはユーザー空間からカーネル空間へコピーされ、その後、カーネル空間からネットワークインターフェースやストレージデバイスへ再びコピーされます。このコピー処理はCPUに大きな負荷をかけ、パフォーマンスのボトルネックとなる可能性があります。
ゼロコピー通信では、この中間的なコピーを省略し、データを直接転送します。これにより、CPUの負荷を軽減し、データ転送速度を向上させることができます。
ゼロコピー通信の仕組み
ゼロコピー通信を実現するためには、いくつかの技術が用いられます。
- DMA (Direct Memory Access): DMAは、CPUを介さずにメモリと周辺機器間で直接データ転送を行う技術です。ゼロコピー通信では、DMAを利用してデータを効率的に転送します。
- メモリマッピング (Memory Mapping): メモリマッピングは、ファイルやデバイスのメモリ領域をアプリケーションのアドレス空間に直接マップする技術です。これにより、アプリケーションはファイルを直接読み書きできるようになります。
- Sendfile: Sendfileは、ファイルディスクリプタからソケットへデータを直接転送するシステムコールです。これにより、アプリケーションはファイルの内容を読み込んでソケットに書き込む処理を省略できます。
ゼロコピー通信の応用例
ゼロコピー通信は、様々な分野で応用されています。
- ネットワーク通信: Webサーバーやファイルサーバーなど、大量のデータをネットワーク経由で転送するアプリケーションにおいて、ゼロコピー通信はパフォーマンス向上に貢献します。
- ファイルI/O: 大量のファイルを読み書きするアプリケーションにおいて、ゼロコピー通信はファイルI/Oの効率を向上させます。
- データベース: データベースシステムにおいて、ゼロコピー通信はデータ転送の効率を向上させ、クエリ処理の高速化に貢献します。
ゼロコピー通信の課題
ゼロコピー通信は、パフォーマンス向上に貢献する一方で、いくつかの課題も存在します。