Organizzazione dei dati in memoria

 

 

La memoria di un computer (RAM) è di tipo statico, cioè a differenza dei dischi non ha parti in movimento. E' quindi molto più veloce e piccola. La struttura interna ricorda quella di un tabellone della battaglia navale. Infatti, per accedere ad una cella occorre specificarne le coordinate, chiamate indirizzo. Siccome risulta molto scomodo (e laborioso per la CPU) dover specificare un numero per la colonna ed uno per la riga, si preferisce accedere con un numero che indica la posizione univocamente. Si pensi di stendere su una fila tutte le celle, passando da una matrice multidimensionale ad una monodimensionale (Figura). Si dice quindi che le celle sono contigue.

Ogni cella ha la capacità di un bit, acronimo di binary digit (cifra binaria). Vuol dire che può essere impostata a 0 o 1, che sono gli unici valori ammessi dalla matematica binaria. A questi valori corrispondono anche due valori logici: FALSO o VERO, che a loro volta, elettronicamente corrispondono all'assenza o alla presenza di una tensione, con conseguente accumulo di carica nella cella stessa. In questo modo un programma può tener conto dei dati immessi dall'utente utilizzando più celle di memoria per scrivervi del testo o delle immagini o dei suoni. Difatti qualsiasi dato presente in memoria viene memorizzato bit per bit. Le differenze esistenti tra suoni, immagini, testi o altro è conseguenza del fatto che questi dati vengano letti da un programma adeguato, che ne esegue quindi la decodifica (vedi formato dei file).

Le esigenze di programmazione e la quantità di memoria richiesta sono sempre stati superiori al singolo bit, quindi si è dovuto ricorrere al byte, cioè un raggruppamento di 8 bit. In realtà i primi esperimenti erano stato fatti con un nibble da 4 bit, ma mai utilizzato e con un byte da 7 bit, che forniva già la possibilità di rappresentare 128 valori (0-127), in modo da poter racchiudere ogni carattere (simboli dell'alfabeto e di punteggiatura) in un byte. Ma l'esigenza di gestire numeri negativi e simboli alternativi hanno portato alla conclusione poi divenuta standard: un byte da 8 bit che permette 256 combinazioni (0-255).

Così oggi il byte è la più piccola unità di memorizzazione. Sono poi stati introdotti dei multipli qui di seguito elencati:
- Kb (Kilobyte) corrispondente a 1.024 byte;
- Mb (Megabyte) corrispondente a 1.024 Kb o 1.048.576 bit;
- Gb (Gigabyte) corrispondente a 1.024 Mb o 1.048.576 Kb o 1.073.741.824 bit;
- Tb (Terabyte) corrispondente a 1.024 Gb o 1.048.576 Mb o 1.073.741.824 Kb o 1.099.511.627.776 bit;
- Pb (Petabyte) corrispondente a 1.024 Tb o 1.048.576 Gb o 1.073.741.824 Mb o 1.099.511.627.776 Kb o 1.125.899.906.842.624 bit;

I multipli non vanno di mille in mille (103) come per la matematica decimale, ma di 1024 in 1024 (210), perché gestiti a singoli bit e soggetti alla matematica binaria.
 

La memoria quindi viene gestita fisicamente dal processore byte per byte specificando la posizione e prelevando i dati in essa contenuti o scrivendoveli.
I programmi ed i sistemi operativi, invece gestiscono la memoria in modo logico, assegnando delle variabili che fungono da segnaposto, cioè che non contengono direttamente il valore, ma l'indirizzo di memoria nel quale il valore è memorizzato. I segnaposto si chiamano puntatori e si dice che la variabile punta ad un indirizzo. Questo per una semplicità di programmazione, ma anche per una più facile rilocazione della memoria. Infatti il sistema operativo sposta i dati dei programmi in esecuzione all'interno della memoria stessa quando deve far posto ai dati di un programma appena avviato e non ha abbastanza celle contigue.

 

La parità

La scienza delle telecomunicazioni ha utilizzato sin dall'inizio la trasmissione dei dati digitali sia convertendoli in segnali analogici tramite i fax e le telescriventi, sia come avviene oggi direttamente sotto forma di impulsi digitali tramite connessioni ottiche o satellitari. Ma prima di arrivare alla conquista della trasmissione sicura dei dati ci si è dovuti imbattere negli errori. E' stato quindi concepito il bit o il byte di parità. Questo sistema permette di capire con buona probabilità se il dato ricevuto sia lo stesso di quello inviato, ossia la trasmissione sia avvenuta correttamente. Successivamente il controllo di parità è stato introdotto anche sulle memorie fisiche considerando il fatto che se una memoria non è più efficiente andando a rileggere il dato ci si accorge che differisce da quello che era stato scritto.
La parità può essere pari o dispari a seconda della scelta del progettista o del programmatore.
Consideriamo il caso della parità pari: abbiamo un byte formato da 00110011. La parità pari prevede che se la quantità di 1 è pari (qui sono 4) il bit di parità è impostato a 1, mentre se è dispari il bit di parità è impostato a 0. Se riceviamo quindi 00100011 ed il bit di parità è impostato a 1 vuol dire che si è verificato un errore.
La parità dispari funziona in modo duale ed opposto, cioè il bit di parità viene impostato a 1 se la quantità di 1 presenti nel byte è dispari e 0 se il numero di 1 è pari.

Il controllo di parità è stato molto utilizzato in passato perché permetteva con un singolo bit o pochi byte di controllare l'intera trasmissione, ma a volte poteva generare falsi allarmi. Infatti se la trasmissione è soggetta a due errori a noi sembra corretta. Sia perché nel byte trasmesso possono variare due bit e quindi il conteggio della parità dà lo stesso risultato, sia perché può variare la parità del byte trasmesso e per errore variare anche lo stato del bit di parità.

 

Torna alla Home page        Torna a Nozioni di base        Torna a Software