ㅏfork()
システムコール実行中のプロセスから子プロセスを複製します。 PIDを除いて、両方のプロセスは同じです。
もちろん、プロセスが書き込みの代わりにヒープから読み取るだけの場合、ヒープをコピーすると多くのメモリが無駄になります。
フルプロセスヒープはコピーされますか?書き込みのみヒープコピーをトリガするように最適化されていますか?
ベストアンサー1
Linuxカーネルは、fork()
呼び出し時にCopy-on-Writeを実装します。親と子が共有するページは、システムコールが行われたときに読み取り専用として表示されます。
読み取り専用ページで書き込み操作を実行すると、2 つのプロセス間のメモリがもはや同一ではないため、ページがコピーされます。したがって、読み取り操作のみを実行すると、ページはまったくコピーされません。