mkfifo - ディスクI / Oは実際に発生しますか?

mkfifo - ディスクI / Oは実際に発生しますか?

2つのアプリケーションがあります。

  • 生産者(Nインスタンス)
  • 消費者(インスタンス1個)

現在書いています。真ん中生産者から結果が出ると、消費者はディスクからこのファイルを読み取り、決定的な結果。

生産者の出力を消費者に直接「ストリーミング」して、このI/Oを最小化したいと思います。

名前付きパイプ(mkfifo)とそれに続く例を見つけました。ここ。見た目は良く見えますが、実際にどのように実装されているのかわかりませんか? FIFOキューはファイルを介してバッファリングされますか?もしそうなら、それはおそらく私には役に立たないでしょう。ディスクを使わずにコンテンツを「メモリから」完全にストリーミングしたいと思います。プロセス全体でこれは可能ではないでしょうか?

ベストアンサー1

ディスクI / Oなし(fifoファイルを開くためにファイルシステムを参照しない限り)

~からLinux fifo(7) のマニュアルページ:

FIFO特殊ファイル(パイプという名前)は、ファイルシステムの一部としてアクセスされることを除いて、パイプに似ています。 [...]プロセスがFIFOを介してデータを交換すると、カーネルはすべてのデータをファイルシステムに書き込むことなく内部的に渡します。したがって、FIFO 特殊ファイルにはファイルシステムに内容がありません。ファイルシステムエントリは、プロセスがファイルシステムでその名前を使用してパイプにアクセスできるようにするための参照ポイントとしてのみ機能します。

おすすめ記事