コピーオンライト
fork()関数発行時に親プロセスのメモリを子プロセスにすべてコピーするのではなくページテーブルだけコピー
ページテーブルエントリ内のページへの書き込み権限を示すフィールドが親も子も無効化
この後、親と子は共有された物理ページにアクセスできる。親子いずれかがデータ更新をかけるとページ共有を解除しそれぞれのプロセスは専用のページを持つ
tkdn.icon データ書き込み・更新時にページフォールトが発生しプロセスのデータがコピーされる(必要なページ分) fork()発行時ではなく初回書き込み時にデータをコピーするので「Copy on Write」(CoW)と呼ばれる
https://scrapbox.io/files/635cc4901f8117001d2dfd99.png
子プロセスへのメモリアクセス後にメモリ使用量が100MiBほど増えている様子
RSSの値は変わらない、プロセスが物理メモリを他のプロセスと共有しているどうかは気にしない CoW が発生してもページに割り当てられる物理メモリが変わるだけで物理メモリが未割当から割当済状態になるわけではない