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