Memoria di massa

Da Wikipedia, l'enciclopedia libera.
Confronto di dimensioni tra diverse memorie di massa rimovibili

In informatica, nell'ambito dell'architettura dei calcolatori, si distinguono due tipi di memoria: la memoria primaria, che lavora a più diretto contatto con il processore, costituita fondamentalmente da memoria RAM, memoria ROM, memoria Cache, e la memoria secondaria o memoria di massa, i cui maggiori rappresentanti sono gli hard disk, ma anche supporti rimovibili come dischi floppy, CD, DVD, nastri magnetici, memorie flash di ogni tipo ed altro ancora. È detta di massa perché raccoglie tipicamente grandi quantità di dati rispetto alla memoria primaria e in maniera non volatile cioè permanente almeno fino alla volontà dell'utente[1].

Descrizione[modifica | modifica sorgente]

Nell'architettura di von Neumann, quando ci si riferisce alla memoria, s'intende la memoria principale, che è quella sulla quale il calcolatore carica i processi (programmi in esecuzione) ed i dati ad essi relativi (si parla appunto di memoria di lavoro), mentre si considera la memoria secondaria alla stregua di un dispositivo d'ingresso (input) e/o di uscita (output) dei dati (periferica di I/O).

La caratteristica principale della memoria di massa è la "non volatilità", ovvero la possibilità di memorizzare permanentemente i dati (per questo 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 nella velocità di accesso ai dati: i tempi medi di accesso alla 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 potuto 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 blocco giusto (latenza di rotazione o latency-time).

Quindi la Memoria di massa è un dispositivo che consente la registrazione, la conservazione e la rilettura dei dati. Può essere di tipo fisso o rimovibile, installato all'interno del computer o esterno e collegato ad esso tramite cavo opportuno o tramite la rete locale, di sola lettura o di lettura/scrittura.

Gestione della memoria di massa[modifica | modifica sorgente]

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 sistema operativo ne utilizza uno diverso ed i più famosi sono FAT32 ed NTFS di casa Microsoft ed ext2-ext3 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).

Ricerca dei dati[modifica | modifica sorgente]

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 di ricerca logaritmico).

Memorizzazione dei dati[modifica | modifica sorgente]

La memorizzazione dei dati, nel caso di memorie non riscrivibili (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[modifica | modifica sorgente]

La cancellazione dei dati (nei supporti che lo consentono, ovvero quelli riscrivibili) viene spesso intesa dai sistemi operativi come la semplice rimozione del record 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 Apple, nel suo Mac OS 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[modifica | modifica sorgente]

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

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 512 byte a 4 KiB), per ottimizzare le operazioni di lettura e scrittura. Questo però può causare uno spreco di memoria, soprattutto quando le pagine sono di grandi dimensioni (si pensi ad un file di 5 KiB ed un file system con cluster di 4 KB: ne sono necessari 2 per un totale di 8 KiB ed uno spreco di ben 3KiB: in questo caso si parla di frammentazione interna.

Invece, per frammentazione esterna s'intende 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.

Note[modifica | modifica sorgente]

  1. ^ DizSearch ::: Dizionario Informatico
informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica