TL;DR
複数のプロセスを並行して動かし、タスクを処理すること。
仕組み
1 つの CPU を複数のプロセスで共有することを指す場合もあれば、1 つのシステム内で複数の CPU が複数のスレッドを動かすこと(マルチプロセッサ)を指す場合もある。
例
curl -s https://www.rfc-editor.org/rfc/rfc1122.txt | wc を実行すると、シェルは 2 つのプロセスを fork して並行に動かす。
$ ps -a
PID TTY TIME CMD
52146 ttys000 0:00.00 curl
52147 ttys000 0:00.00 wc1 つ目のプロセス(PID 52146)は curl を実行し、URL からテキストファイルをダウンロードする。2 つ目のプロセスは wc を実行する。
| を使うと、OS にバッファを割り当てさせ、curl の出力と wc の入力をそのバッファにリダイレクトさせられる。curl のプロセスはバッファがいっぱいになると待ち、wc がバッファを消費すると再開する。逆に wc のプロセスは、バッファが空になると curl が出力するまで待つ。
curl はすべてのテキストを読み終えると終了し、これ以上データがないことを示すマーカをパイプに置く。このマーカは、もうデータは来ないので終了してよいという wc への通知になる。