私の質問は、おそらく言葉遣いが不十分なものであり、メモリ管理に関する私の素人的な理解に由来しています。
私の懸念は次のとおりです。何回もフォークする Perl スクリプトがあります。perldoc の fork ページからわかるように、copy-on-write が実装されています。次に、それぞれの子が を呼び出しsystem()
、再度 fork して、外部プログラムを呼び出します。外部プログラムからのデータは子プログラムに読み戻され、保存可能なファイルとしてダンプされます。すべての子プログラムが終了すると、親プログラムによって取得および処理されます。
私が懸念しているのは、この状況のボラティリティの認識です。私が考えている最悪のシナリオを考えてみましょう。それぞれの子について、新しいデータが到着するとすぐに、コピー オン ライト メモリ全体がコピーされます。この場合、いくつかのフォークを作成した後、すぐにメモリの問題が発生します。
しかし、代わりに、コピー オン ライトは、必要なデータを含むメモリの最小のチャンクのみをコピーするのでしょうか? では、このメモリの量は何ですか? サイズはどのように設定されていますか?
私が尋ねていることの詳細が言語に依存しているのか、それとも下位レベルのプロセスに依存しているのかはわかりません。