Copy-on-write

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Copy-on-write je označení pro optimalizaci používanou v softwaru.

Princip spočívá v tom, že v okamžiku, kdy je vydán příkaz k pořízení kopie dat, se ve skutečnosti fyzická kopie nevytvoří, a aplikaci je předán toliko jiný odkaz na již existující data. Skutečná kopie je vytvořena teprve ve chvíli, kdy jedna z aplikací sdílejících společnou kopii vydá pokyn k zápisu dat.

Tak je podstatně zkrácen čas k „vytvoření kopie“, ale zároveň nehrozí, že by došlo k problémům se zápisem na stejné místo, protože obě dvě kopie používají stejná fyzická data jen tak dlouho, dokud je jejich shoda zaručena prostým faktem, že je od doby, kdy byly shodné, nikdo neměnil.

Postup copy-on-write se používá například v implementaci systémového volání fork na unixových systémech (které vytváří identickou kopii procesu), nebo v operaci snapshot v GoogleFS.

Podobnou techniku kopírování, ovšem pro proměnné, používají některé skriptovací jazyky, např. PHP.