パイプラインは、Unix から Linux に継承されたプロセス間通信メカニズムであり、Unix の初期の重要な通信メカニズムです。このアイデアは、メモリ内に共有ファイルを作成し、通信する双方の当事者がこの共有ファイルを使用して情報を転送できるようにすることです。この方式は一方向のデータ伝送の特徴があるため、メッセージを伝送するための共有ファイルを「パイプライン」と呼びます。
パイプの具体的な実装には、通信に使用されるファイルに名前があるかどうかに応じて、「匿名パイプ」と「名前付きパイプ」があります。
パイプと共有メモリの違い
一見すると、パイプと共有メモリには大きな違いがないように見えますが、ここではその違いを紹介します。この 2 つの間:
● パイプラインでは、カーネルとユーザー空間の間に 4 つのデータ コピーが必要です: ユーザー空間の buf からカーネルにデータをコピー -> カーネルがデータをメモリにコピー -> メモリからカーネル -> ; カーネルからユーザー空間へのバッファ。共有メモリはデータを 2 回のみコピーします (ユーザー空間からメモリへ -> メモリからユーザー空間へ)。
## ● パイプラインは循環キューを使用して実装されており、サイズ制限なくデータを継続的に送信できます。共有メモリ内で転送されるデータのサイズは毎回固定されます。# 共有メモリはマップされたファイルの任意の場所にランダムにアクセスできますが、パイプはシーケンシャルな読み取りと書き込みのみ可能です。##● パイプは次のことができます。独立した完全なデータ処理 配信および通知メカニズム、共有メモリでは、メッセージ配信に他の通信方法を使用する必要があります。
言い換えれば、この 2 つの最大の違いは次のとおりです: 共有メモリ領域は、利用可能な IPC 形式の中で最も高速です。このようなメモリ領域が、それを共有するプロセスのアドレス空間にマッピングされると、これらの間のデータはプロセスをパスすると、相互にデータを渡すためにカーネル内でシステム コールを実行する必要がなくなり、時間を節約できます。
おすすめの関連記事とチュートリアル:
linux チュートリアル以上がLinuxのパイプラインとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。