Copy-on-write: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Duplicazione della risorsa virtuale: riferito a "tentativo", non a "scrittura" |
|||
Riga 52:
== Principali applicazioni ==
La tecnica del ''copy-on-write'' è spesso utilizzata dai [[sistema operativo|sistemi operativi]] per la gestione delle [[protezione della memoria|pagine di memoria]] in regime di [[memoria virtuale]]: le pagine condivise possono essere marcate come di sola lettura in modo tale che gli accessi in scrittura vengano intercettati dalla [[
Il ''copy-on-write'' può ad esempio essere sfruttato quando un [[processo (informatica)|processo]] richiede (attraverso la [[chiamata di sistema]] ''[[fork (programmazione)|fork]]'' o analoga) la creazione di un nuovo [[processo figlio]], inizialmente identico a sé stesso,<ref>Il vantaggio di tale approccio è particolarmente evidente nei sistemi in cui il caricamento in memoria di un nuovo programma è scomposto nelle due operazioni di <kbd>[[fork (programmazione)|fork]]</kbd> ed <kbd>[[exec(2)|exec]]</kbd>: il [[processo figlio]] originante dalla <kbd>fork</kbd> non necessita davvero della copia dei dati del processo originale, giacché la successiva chiamata ad <kbd>exec</kbd> li sostituirà quasi immediatamente con quelli del nuovo programma.</ref> oppure per ottimizzare la creazione di [[buffer]] di grandi dimensioni, in particolare se [[sparsità|sparsi]].<ref>Grandi [[buffer]] [[inizializzazione|inizializzati]] a zero, quali quelli prodotti dalla funzione <kbd>[[calloc]]</kbd> in [[C (linguaggio)|C]], possono essere ''simulati'' dal sistema facendo puntare tutte le pagine virtuali di memoria necessarie a contenerlo verso un'unica pagina fisica contenente soli byte nulli; solo in seguito, se e quando l'applicazione tenterà di scrivere in tale buffer, il sistema provvederà ad [[Allocazione della memoria|allocare]] fisicamente le pagine di memoria strettamente necessarie.</ref>
|