【コピーオンライト】
コピーオンライト(CoW) とは?
最終更新:
💡 書き込むそのときまで、コピーは先送り
データを複製するとき、まず同じ実体を共有し、書き換えが必要になった部分のコピーを後から作る仕組み。変更をほかの利用者から分離しながら、不要な複製を減らす。
📌 このページのポイント
コピーオンライトって何?
複製したいデータを、最初は同じ実体で共有し、書き換えが必要になった部分を後からコピーする考え方だよ。読むだけなら不要なコピーを作らずに済むんだ。
どこで使うの?
子が書き込むと、親の値も変わる?
私有メモリなら、子の変更は親の値へ反映しないよ。たとえば共有していたページAに子が書くと、子用のコピーを作って書き換える。親は元のページを使い続ける。共有を目的にした領域とは区別しよう。
書き込みはどう見つけるの?
弱点や、ほかの使い道は?
もっと詳しく知りたい人へ
fork後の書き込みはすべてコピーされますか?
説明は私有のメモリ領域についてです。MAP_SHAREDのように共有を目的にした領域は、親子からの更新を共有するため、同じ扱いではありません。
まとめ:ざっくりこれだけ覚えればOK!
「コピーオンライト」って出てきたら「書き換えるときまでコピーを先送りする仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Copy-on-Write」 = 書き込み時にコピー
💬 Copy(複製)をOn Write(書き込みが起きたとき)に行うから、この名前だよ。略して「CoW」と書かれることもあるね