EMZETT.
Login

Copy-on-Write

Kurz: Copy-on-Write bedeutet: Eine Kopie wird zunächst nur versprochen, nicht gemacht. Erst wenn jemand die Daten verändert, wird wirklich kopiert.

Genauer: Mehrere Nutzer teilen sich dieselben Daten, solange alle nur lesen. Schreibt einer, bekommt er eine private Kopie des betroffenen Teils. Das spart Zeit und Speicher.

Im Detail

  • Prozesse: Nach fork() teilen Eltern- und Kindprozess dieselben Speicherseiten. Erst beim Schreiben wird die Seite kopiert.
  • Dateisysteme: Btrfs, ZFS und APFS schreiben Änderungen in neue Blöcke und ermöglichen so schnelle Snapshots.
  • Programmiersprachen: Manche Strings und Arrays (zum Beispiel in Swift) kopieren erst bei Änderung.
  • Unveränderliche Daten: Das Prinzip passt gut zu persistenten Datenstrukturen.
  • Kosten: Der erste Schreibzugriff ist langsamer, und ein Seitenfehler wird ausgelöst.

Siehe auch: Virtueller Speicher und Paging