Copy-on-write: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Collegamenti esterni: Aggiunto il template "Portale" |
|||
(10 versioni intermedie di 9 utenti non mostrate) | |||
Riga 7:
Immediatamente dopo la duplicazione e per tutto il tempo in cui nessuna delle due risorse viene modificata, esse sono, di fatto, indistinguibili; durante questo lasso di tempo la reale esistenza di due copie indipendenti non è strettamente necessaria: il sistema può limitarsi a ''simulare'' l'operazione di duplicazione, mantenendo l'esistenza di un'unica copia e gestendo attraverso di essa, in modo del tutto trasparente ai richiedenti, tutte le operazioni di lettura destinate ad una qualsiasi delle due.
La vera e propria duplicazione della risorsa può essere posticipata fino al momento in cui l'esistenza di due risorse indipendenti
Il vantaggio principale della strategia copy-on-write risiede nel fatto che se una risorsa duplicata viene successivamente liberata o distrutta senza che nel frattempo né l'originale né la copia siano mai stati modificati, il sistema ha effettivamente evitato una duplicazione non necessaria, con conseguente risparmio di tempo. Il copy-on-write è quindi tanto più vantaggioso quanto più onerosa è l'operazione di duplicazione e quanto più infrequenti sono le operazioni di scrittura.
Riga 17:
L'implementazione di una strategia copy-on-write impone che, nel sistema, l'identificazione delle risorse interessate sia svincolata ed indipendente (almeno dal punto di vista degli utilizzatori) dalla loro effettiva collocazione fisica; è cioè necessario che tali risorse siano [[virtualizzazione|virtualizzate]].
Ciò che gli utilizzatori conoscono ed usano è un [[identificatore]] di [[Memoria virtuale|risorsa virtuale]], attraverso il quale richiedere al sistema l'accesso alla risorsa; il sistema, per parte sua, associa ciascun identificatore alle informazioni necessarie per poter accedere alla vera e propria [[Memoria fisica|risorsa fisica]]. Nel seguito si indicheranno convenzionalmente:
* con
* con la scrittura
=== Duplicazione della risorsa virtuale ===
Riga 25:
Nella situazione normale, ogni risorsa fisica è associata ad un unico identificatore:
* <math>I_A \rightarrow R_1</math>
Quando il sistema riceve la richiesta di duplicare la risorsa virtuale
*<math>I_A \rightarrow R_1</math>
*<math>I_B \rightarrow R_1</math>
La risorsa fisica
Per una corretta gestione del copy-on-write il sistema deve tenere traccia del fatto che
=== Scrittura di una risorsa virtuale ===
Ipotizzando che si renda necessaria un'operazione di scrittura (ad esempio sulla risorsa virtuale
* intercetta e sospende l'operazione di scrittura
* crea una nuova risorsa fisica
* associa l'identificatore
A questo punto il sistema si trova nel seguente stato:
* <math>I_A \rightarrow R_2</math>
* <math>I_B \rightarrow R_1</math>
L'operazione di scrittura inizialmente sospesa può quindi proseguire, modificando lo stato di
== Principali applicazioni ==
La tecnica del ''copy-on-write'' è spesso utilizzata dai [[sistema operativo|sistemi operativi]] per la gestione delle [[
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 <
== Note ==
Riga 77:
| pagine = 225-278
| anno = 1988
| url =
| lingua = inglese
| accesso = 2009-04-25
}}
{{Portale|informatica}}
[[Categoria:Gestione della memoria]]
[[Categoria:Programmazione]]
|