Memoria di massa

In informatica si distinguono due tipi di memoria: la memoria principale, costituita fondamentalmente da memoria RAM, memoria ROM, memoria Cache, e la memoria secondaria o memoria di massa, rappresentata maggiormenta dall'Hard Disk, ma anche da supporti rimovibili, come dischi floppy, CD, DVD, nastri magnetici, memorie flash di ogni tipo, ecc.

Nell'architettura von Neumann, quando ci si riferisce alla memoria, si intende la memoria principale, che è quella sulla quale il calcolatore carica i processi ed i dati ad essi relativi (si parla appunto di memoria di lavoro), mentre si considera la memoria secondaria alla stregua di un dispositivo di Input e/o di Output.

La caratteristica peculiare della memoria di massa è la "non volatilità", ovvero la possibilità di memorizzare permanentemente i dati (per qesto si parla anche di memoria di archiviazione). Inoltre la memoria di massa ha un costo inferiore rispetto alla memoria principale, per questo verrebbe da chiedersi perché nei moderni computer non si utilizzi solo memoria secondaria (tramite il meccanismo della memoria virtuale): la ragione risiede nel fatto che i tempi medi di accesso a memoria principale sono dell'ordine delle centinaia di nanosecondi, contro i millisecondi delle memorie di archiviazione, che, quindi necessitano di tempi di accesso maggiori di ben 5 ordini di grandezza.

La tecnologia, infatti, è riuscita nel corso degli anni a rendere le memorie ROM e RAM sempre più veloci, ma nulla ha potuta contro i limiti "fisici" dei dischi, che hanno bisogno di aspettare che la testina si posizioni sulla traccia giusta (tempo di ricerca o seek-time) e sul cilindro giusto (latenza di rotazione o 'latency-time).

Indice

Gestione della memoria di massa

I dati sono riuniti in entità omogenee dette file. Le memorie di massa sono gestite da un componente fondamentale dei sistemi operativi, il file-system: ogni sistemo operativo ne utilizza uno diverso ed i più famosi sono FAT32 ed NTFS di casa Microsoft ed ext2 dei sistemi Linux. Fondamentalmente l'organizzazione delle memorie di massa è gestita tramite strutture dati collegate che possono essere liste o, molto più frequentemente, B-Alberi , oppure tabelle di indirizzamento (dette TOC, dall'inglese Table Of Contents).

Il primo caso è discusso nel link fornito. Nel secondo caso, una parte del supporto di memoria contiene una tabella nella quale, banalmente, è scritto cosa si trova nelle varie locazioni di memoria. Al giorno d'oggi alcuni sistemi operativi (come Solaris di casa Sun Microsystem) utilizzano metodi ibridi, di TOC che contengono indirizzi a strutture collegate.

Ricerca dei dati

Nel caso di file-system a TOC la ricerca è piuttosto semplice e rapida (si pensi ad un magazzino con un registro che indichi lo scaffale che contiene la merce desiderata), mentre nel caso di struttura collegata la ricerca può risultare onerosa(utilizzando una lista collegata, nel caso peggiore si deve scorrere l'intera lista, ma, nel caso di Albero B+, alla peggio si ha un tempo logaritmo di ricerca).

Memorizzare dati

La memorizzazione dei dati, nel caso di memorie non rescrivibili (per esempio CD-R) avviene progressivamente, riempiendo lo spazio in ordine progressivo di indirizzo (nell'esempio del CD-R, se abbiamo 700 MB di spazio, ma ne utilizziamo 658, le tracce vuote saranno quelle più esterne, come è facilmente visibile, guardando la superficie del CD). Per quanto riguarda le memorie riscrivibili (per esempio gli hard disk) il data-storage viene eseguito fondamentalmente secondo tre possibili criteri:

  1. first-fit: si cerca la prima locazione di memoria abbastanza grande da ospitare il file da salvare
  2. best-fit: si cerca la più piccola locazione di memoria abbastanza grande da ospitare il file da salvare
  3. worst-fit: si cerca la più grande locazione di memoria disponibile (può sembrare, a prima vista, un assurdo, ma ciò spesso permette che la parziale occupazione della locazione lasci abbastanza spazio libero per ospitare un altro file).

Statisticamente si può osservare che i primi due metodi sono più efficienti del terzo.

Cancellazione dei dati

La cancellazione dei dati (nei supporti che lo consentono, ovvero quelli riscrivibili) viene spesso intesa dai sistemi operativi come la semplice rimozione del recordo relativo al file in questione dalla TOC o dall'albero B+, il che rende possibile tramite apposite utility il ripristino di dati cancellati, in quanto, questi risiedono di fatto in memoria, finché la necessità di spazio sul quale memorizzare nuovi dati spingerà il sistema operativo a scrivere nella locazione che l'utente, cancellando il vecchio file, ha di fatto indicato come vuota.

Recentemente la Apple, nel suo MacOS X ha incluso un tool di cancellazione sicura (utility simili si trovano facilmente in rete per tutti i sistemi operativi) che riscrive più volte dati casuali sul file da cancellare.

Frammentazione interna ed esterna

Da notare che tutti i file-system commerciali utilizzano la tecnica del file-paging: un supporto di memoria di massa viene suddiviso in pagine o cluster (la cui misura in genere varia da 4KB a 512KB), per ottimizzare le operazioni di lettura e scrittura. Questo però può causare uno spreco di memoria, soprattutto quando la pagine sono d grandi dimensioni (si pensi ad un file di 516 KB ed un file-system con cluster di 512 KB: ne sono necessari 2 per un totale di 1024 KB ed uno spreco di ben 508 KB): in questo caso si parla di frammentazione interna.

Invece, si intendono per frammentazione esterna il fenomeno per il quale tra due file si viene a creare uno spazio vuoto troppo piccolo per memorizzarvi un altro file: questo fenomeno è tipico dei file-system con cluster troppo piccoli.

Articolo correlato

See also: Memoria di massa, Apple, Architettura von Neumann, Cache, Calcolatore elettronico, Computer, File, File-system, Glossario informatico, Informatica