ウィキペディアによると(間違っている可能性があります)
fork() システム コールが発行されると、親プロセスに対応するすべてのページのコピーが作成され、OS によって子プロセス用の別のメモリ ロケーションにロードされます。ただし、これは場合によっては必要ありません。子が「exec」システム コール (C プログラム内から実行可能ファイルを実行するために使用される) を実行する場合、または fork() の直後に終了する場合を考えてみましょう。親プロセスのコマンドを実行するためだけに子プロセスが必要な場合、親プロセスのページをコピーする必要はありません。これは、exec がそれを呼び出したプロセスのアドレス空間を実行するコマンドに置き換えるためです。
このような場合、コピーオンライト (COW) と呼ばれる手法が使用されます。この手法では、フォークが発生したときに、親プロセスのページは子プロセスにコピーされません。代わりに、ページは子プロセスと親プロセスの間で共有されます。プロセス (親または子) がページを変更するたびに、変更を実行したそのプロセス (親または子) に対して、その特定のページだけの別のコピーが作成されます。このプロセスでは、今後のすべての参照で共有ページではなく、新しくコピーされたページが使用されます。もう一方のプロセス (共有ページを変更しなかったプロセス) は、ページの元のコピー (現在は共有されていません) を引き続き使用します。この手法は、何らかのプロセスがページに書き込むときにページがコピーされるため、コピーオンライトと呼ばれます。
いずれかのプロセスがページに書き込もうとしたときのようです。ページの新しいコピーが割り当てられ、ページ フォールトを生成したプロセスに割り当てられます。元のページは後で書き込み可能としてマークされます。
私の質問は次のとおりです。プロセスのいずれかが共有ページへの書き込みを試みる前に、フォークが複数回呼び出された場合はどうなりますか?