コピーオンライト
ウィキペディア フリーな encyclopedia
コピーオンライト (Copy-On-Write) とは、コンピュータプログラミングにおける最適化戦略の一種である。COWと略記することもある。
![]() |
コンピュータ内部で、ある程度大きなデータを複製する必要が生じたとき、愚直な設計では、直ちに新たな空き領域を探して割り当て、コピーを実行する。 ところが、もし複製したデータに対する書き換えがなければその複製は無駄だったことになる。
そこで、複製を要求されても、コピーをした振りをして、とりあえず原本をそのまま参照させるが、ただし、そのままで本当に書き換えてはまずい。原本またはコピーのどちらかを書き換えようとしたときに、それを検出し、その時点ではじめて新たな空き領域を探して割り当て、コピーを実行する。これが「書き換え時にコピーする」、すなわちコピーオンライト (Copy-On-Write) の基本的な形態である。
基盤となる考え方は、複数の(何らかの)要求者がリソースを要求するときに、少なくとも当初はそれらの要求を区別する必要がないときに同じリソースを与える、というものである。これは要求者がリソースを「更新」しようとするまで保持され、「更新」が他者に見えないようにリソースの個別のコピーを必要になった時点で作成する。要求者からはこの一連の動きは見えない。第一の利点は要求者が全く更新しなければ、個別のコピーを作成する必要が生じないという点である。