informatica

chiedi all'esperto LOGOhome


In che cosa consiste la "deframmentazione" dell'hard disk?

(risponde Luca Fini)

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?