Mecanismul copy -on-write ( în engleză Copy-On-Write, COW ) este utilizat pentru a optimiza multe procese care au loc în sistemul de operare , cum ar fi, de exemplu, lucrul cu RAM sau fișiere de pe disc.
Ideea abordării copy-on-write este că atunci când o regiune de date este citită, se folosește o copie partajată, iar dacă datele se modifică, se creează o nouă copie.
De exemplu, atunci când se folosește funcția UNIX fork () , în loc de copiere reală, pentru care trebuie alocată memorie, nucleul modifică descriptorii paginilor de memorie ale procesului părinte , interzicând orice scriere în paginile de date (paginile de cod de program sunt deja interzis pentru scris; deși există unele subtilități - dar ele nu afectează raționamentul suplimentar). Apoi este creat un proces copil, în care sunt copiați descriptorii paginii de memorie ai procesului părinte. Nucleul marchează apoi aceste pagini ca partajate.
O încercare de a scrie pe paginile mapate (fie din procesul părinte sau fiu) aruncă o excepție , care transferă controlul către kernel. Nucleul vede că acest acces a fost legal și creează o copie a paginii modificate. Astfel, este posibil să se reducă cantitatea de memorie fizică consumată de programe. Mecanismul COW este destul de complicat de implementat, în special în sistemele multi-core, iar erorile din acesta pot duce la vulnerabilități, de exemplu, Dirty COW Vulnerability (Linux, 2007-octombrie 2016)
Mecanismul a devenit larg răspândit în crearea celor mai recente sisteme de fișiere , cum ar fi ZFS și Btrfs . Datorită lui, crearea de instantanee în aceste sisteme are loc aproape instantaneu, fără a ocupa resurse mari ale mediului de stocare .