Copy-on-write: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ValterVBot (discussione | contributi)
m Bot: Elimino interlinks vedi Wikidata
AttoBot (discussione | contributi)
m WPCleaner v1.35 - Disambigua corretto un collegamento - Allocazione
Riga 52:
== Principali applicazioni ==
 
La tecnica del ''copy-on-write'' è spesso utilizzata dai [[sistema operativo|sistemi operativi]] per la gestione delle [[paginaprotezione (informatica)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 [[Memory Managementmanagement Unitunit|MMU]] del processore, che solleva un'[[eccezione (informatica)#Eccezioni hardware|eccezione]] e passa il controllo ad un'apposita funzione di gestione del [[kernel]] che provvede alla duplicazione fisica della pagina interessata prima che la scrittura venga ripresa ed eseguita.
 
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 <tt>[[fork (programmazione)|fork]]</tt> ed <tt>[[exec(2)|exec]]</tt>: il [[processo figlio]] originante dalla <tt>fork</tt> non necessita davvero della copia dei dati del processo originale, giacché la successiva chiamata ad <tt>exec</tt> li sostituirà quasi immediatamente con quelli del nuovo programma.</ref> oppure per ottimizzare la creazione di [[buffer (informatica)|buffer]] di grandi dimensioni, in particolare se [[sparsità|sparsi]].<ref>Grandi [[buffer (informatica)|buffer]] [[inizializzazione|inizializzati]] a zero, quali quelli prodotti dalla funzione <tt>[[calloc]]</tt> in [[linguaggio 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 [[allocazioneAllocazione della memoria|allocare]] fisicamente le pagine di memoria strettamente necessarie.</ref>
 
== Note ==