Copy-On-Write
aus Wikipedia, der freien Enzyklopädie
Das Copy-On-Write-Verfahren ist eine Methode zur Vermeidung überflüssiger Kopien von Daten zwischen Prozessen unter Unix-artigen Systemen, insbesondere bei oder nach einem fork-Systemaufruf.
Wenn der Betriebsystemkern eine Speicherseite im Adressraum eines anderen Prozesses verfügbar machen muss, ist es überflüssig, die Daten tatsächlich zu kopieren, d.h. ein weiteres mal im Hauptspeicher anzulegen, wenn die Daten nur ausgelesen, aber nicht beschrieben werden. Es reicht, wenn erst einmal die beiden Prozesse auf ein und die selbe Speicherseite zugreifen. Erst wenn einer der beiden Prozesse die Daten zu manipulieren versucht, müssen diese tatsächlich (und dann auch nur teilweise) kopiert werden, da sich die Inhalte der Speicherseiten dann unterscheiden.
Dies wird auf modernen CPUs meist mit Hilfe des Pagings realisiert: die beiden Prozesse greifen auf die gleiche Speicherseite zu. Sowohl im Adressraum des Besitzers des Originals, als auch in dem des Besitzers der Kopie wird dieser gemeinsame Speicherbereich als „nur lesbar“ markiert. Findet ein Schreibzugriff statt, wird das Betriebssystem informiert, so dass dieses vor dem tatsächlichen Schreibzugriff die betroffene Speicherseite durch eine tatsächliche Kopie ersetzen kann.