Copy-on-write

Copy-on-write (COW) je v programování technika optimalizace a správy dat,[1] která při kopírování (nezměněných) dat nevede ihned k jejich duplikaci (v paměti, na disku atp.), nýbrž je duplikace odložena na později (ke zkopírování dochází až v okamžiku první změny). Za cenu malého zvýšení režie (pro evidenci úseků dat sdílených mezi originálem a kopií) je možné dosáhnout významné úspory systémových prostředků určených pro uložení dat. COW se používá při vzniku nových procesů (např. systémové volání fork() v unixových systémech, duplikaci virtuálních strojů, vytváření snapshotů u souborových systémů a podobně).

Charakteristika

Copy-on-write se někdy označuje jako „implicitní sdílení“[2] nebo stínování.[3]

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.

Reference

  1. BOVET, Daniel Pierre; CESATI, Marco. Understanding the Linux Kernel. [s.l.]: "O'Reilly Media, Inc.", 2002-01-01. Dostupné online. ISBN 9780596002138. S. 295. (anglicky) Je zde použita šablona {{Cite book}} označená jako k „pouze dočasnému použití“.
  2. Implicit Sharing [online]. [cit. 2016-08-04]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  3. RODEH, Ohad. B-trees, shadowing, and clones. ACM Transactions on Storage. 1 February 2008, s. 1. Dostupné online [cit. 4 August 2016]. DOI 10.1145/1326542.1326544. Je zde použita šablona {{Cite journal}} označená jako k „pouze dočasnému použití“.


Externí odkazy

  • Logo Wikimedia Commons Obrázky, zvuky či videa k tématu Copy-on-write na Wikimedia Commons
Pahýl
Pahýl
Tento článek je příliš stručný nebo postrádá důležité informace.
Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.