In che cosa consiste la “deframmentazione” dell’hard disk?


La deframmentazione di un hard disk e’ un’operazione che serve ad eliminare
un fenomeno fisiologico detto “frammentazione”. Per capire di
cosa si tratta occorre spiegare brevemente come avviene la gestione di
un hard disk in generale.

Lo spazio di memorizzazione dell’hard disk e’ costituito fisicamente da
un insieme di blocchi di lunghezza fissa identificati con numeri. Poiche’
sarebbe assai complicato utilizzarlo direttamente sotto questa forma il
Sistema Operativo “maschera” questa struttura sovrapponendoci
un “file system”, ovvero consente all’utente di vedere il disco
come se fosse composto da un certo numero di zone di lunghezza variabile
identificate con un nome (i files); una struttura che risulta assai piu’
comoda di quella di base.

Quando un utente o un’applicazione scrive dati sul disco, ossia crea un
file  il Sistema Operativo assegna al file un certo numero di blocchi
di disco e mediante opportune tabelle, fa in modo che tali blocchi vengano
segnati come occupati in modo che non possano essere assegnati ad altri
files. Quando il file viene cancellato i blocchi vengon segnati come liberi
per una successiva assegnazione. E’ evidente che in questo modo sul disco
vengono a crearsi delle zone occupate inframmezzate da zone libere via
via che si creano e cancellano files. Questo fenomeno e’ detto appunto
“frammentazione”.

Inoltre, il Sistema Operativo consente che i blocchi assegnati ad un file
non siano necessariamente “contigui”, ovvero in sostanza i dati
relativi ad un file possono essere contenuti in varie zone sparse arbitrariamente
sul disco. Cio’ consente una migliore utilizzazione del disco in quanto
permette di riutilizzare frammenti di varia dimensione indipendentemente
dalla lunghezza del file, facilita le operazioni di estensione dei files,
etc., ma accentua il fenomeno della frammentazione.

In definitiva nel corso del tempo i files che vengono via via creati e
cancellati tendono ad essere sempre maggiormente frammentati perche’ le
aree libere tendono a rimpicciolire (ogni volta che e’ richiesta l’assegnazione
di un’area minore della piu’ piccola disponibile) e solo raramente possono
ingrandirsi (quando casualmente viene liberata un’area contigua ad un’area
gia’ libera).
 
Questo tipo di gestione del disco (che, ripeto, e’ comune a tutti i sistemi
operativi moderni) rende ovviamente piu’ complessa l’operazione di rilettura
dei dati: infatti e’ necessario andare a ricercare i vari “pezzi”
del file in zone diverse del disco diminuendo cosi’ la velocita’ di lettura
in quanto la struttura meccanica dei dischi magnetici e’ tale da ottimizzare
la velocita’ di accesso ai dati quando questo avviene in modo “sequenziale”.

Col passare del tempo quindi le operazioni di lettura sequenziale (tipiche,
ad esempio, nel caricamento in memoria dei programmi) tendono a rallentare
a causa della frammentazione e si rende necessario quindi adottare misure
per minimizzare la frammentazione dei dischi.

In generale cio’ si puo’ fare in due modi: rendendo piu’ complesso l’algoritmo
di assegnazione dei blocchi liberi in modo da minimizzare il fenomeno,
oppure lasciando che il disco si frammenti e procedendo saltuariamente
ad una operazione di “deframmentazione”. I sistemi operativi
Microsoft (DOS, Windows) seguono questa seconda via.

La deframmentazione consiste quindi nello spostare i vari pezzi dei files
sul disco riscrivendoli in modo che i pezzi appartenenti allo stesso file
risultino fisicamente contigui sul disco.
 
Vedi anche: Quali sono le caratteristiche
e le differenze tra i file system ext2 e FAT?