Deframmentazione

Da Wikipedia, l'enciclopedia libera.
Esempio di frammentazione e successiva deframmentazione

In informatica la deframmentazione è un'operazione di ottimizzazione dell'archiviazione dei dati nella memoria di massa di un computer che consiste nel ridurre la frammentazione esterna dei file presenti sulla memoria stessa (es: un disco fisso) ristrutturandone l'allocazione facendo in modo che ciascun file risulti memorizzato in una zona contigua dal punto di vista fisico; questo diminuisce drasticamente i tempi di accesso e lettura ai file. La deframmentazione è un'operazione che può essere svolta in modo automatico dal file system durante il suo regolare funzionamento oppure eseguita tramite esplicita richiesta dell'utente tramite l'esecuzione di un programma.

Campo di applicazione[modifica | modifica sorgente]

Exquisite-kfind.png Per approfondire, vedi Frammentazione (informatica).

La deframmentazione può essere utilizzata solo per ridurre la frammentazione esterna. La frammentazione interna non può invece attualmente essere ridotta, per il metodo di utilizzo dei file system odierni. L'utilizzo di questa tecnica è essenziale per i filesystem che utilizzano una tecnica di allocazione file contigua, altrimenti ad un certo punto non sarebbe possibile allocare nuovi file anche se ci fosse spazio sufficiente su disco (ma frammentato). Nell'allocazione a lista concatenata (usata nei moderni filesystem) la deframmentazione serve solo a velocizzare le operazioni di lettura/scrittura su disco.

Quando un file viene scritto su un hard disk, questo occupa il primo spazio libero (settore) disponibile sullo stesso, ed occupa tanti settori quanti servono per contenere l'intero file. Se però lo spazio contiguo è troppo piccolo rispetto alle dimensioni del file, il file viene suddiviso in uno o più pezzi non contigui. Alla fine di ogni catena di settori contigui, viene inserito un riferimento che rimanda al prossimo settore che contiene la restante porzione del file, fino al raggiungimento della fine del file.

Un file, modificato in più occasioni, tende ad aumentare di dimensioni e quindi ad essere scritto in diversi posti liberi dell'hard disk, cioè tende ad essere scritto in più "frammenti". Reiterate azioni di questo tipo, del tutto normali, portano ad una frammentazione di file o del documento, con il risultato di rendere più lento il loro reperimento. La gestione del file da parte del software è trasparente per l'utente ma l'hard disk è costretto a leggere in punti differenti della faccia del disco, saltando da un settore all'altro, per fornire il file completo, rallentando così le operazioni di input/output.

Funzionamento[modifica | modifica sorgente]

Esempio di frammentazione e successiva deframmentazione in un sistema a lista concatenata

La deframmentazione ripristina la contiguità dei file rendendo più veloce la loro lettura in quanto il sistema operativo non deve cercare le parti del file sparse per l'hard disk. Il programma di deframmentazione sposta temporaneamente i cluster di uno stesso file in zone libere del disco; successivamente cerca (o libera spostando altri cluster) uno spazio contiguo che possa contenere questo file. Questa operazione ha tempistiche lunghe, in quanto il sistema operativo oltre a dover copiare i file in un'altra posizione, deve riaggiornare tutti i puntatori della lista di ogni file. Nell'allocazione contigua la deframmentazione consiste solamente nel ricompattare tutti i file, eliminando gli spazi vuoti tra essi. Anch'essa è un'operazione molto dispendiosa di tempo.

Problematiche[modifica | modifica sorgente]

La problematica maggiore dell'operazione di deframmentazione è la presenza di file che non possono essere spostati. Questi file sono file di paging e di swap, utilizzati dal sistema operativo per la gestione della RAM. Lo spostamento di questi file causerebbe la perdita dei riferimenti per il corretto funzionamento del sistema operativo. Inoltre, poiché il programma di deframmentazione non può spostare sé stesso né file utilizzati da altri programmi, esistono tool che deframmentano il disco rigido prima dell'avvio del sistema operativo, permettendo così la completa deframmentazione.

Altre tecniche[modifica | modifica sorgente]

Alcuni programmi specializzati forniscono la possibilità di effettuare vari tipi di deframmentazione a seconda delle nostre esigenze. La deframmentazione può essere effettuata al semplice fine di ricompattare i file frammentati (opzione utile per gli hdd di archivio) oppure per esempio per riordinare i file in ordine alfabetico oppure in base alla data e/o frequenza di accesso ai file. Quest'ultima opzione è molto utile per hdd che ospitano il sistema operativo e i programmi.


Software[modifica | modifica sorgente]

Segue un elenco di software utilizzabili per deframmentare il disco

Voci correlate[modifica | modifica sorgente]