- La memoria RAM:
- Random Access Memory che vuole dire (attenzione…) Memoria ad accesso diretto (…e non casuale); è una memoria volatile (che perde i dati allo spegnimento del computer), che contiene tutti i programmi in esecuzione (detti processi o task).
- Un programma:
- è una sequenza di istruzioni che, quando va in esecuzione, viene caricato (cioè copiato) sulla RAM. Si può dire che ogni programma è fatto da istruzioni e dati. I dati di un processo non sono altro che le variabili del programma. Dati e istruzioni saranno contenute nelle locazioni della RAM. Per capire meglio si veda l’approfondimento: caratteristiche delle variabili.
- un processo:
- come detto è un programma in esecuzione
Quindi si può dire che La RAM può essere vista in due modi:
- sequenza di processi (dal punto di vista Software)
- sequenza di celle o locazioni (dal punto di vista Hardware)
La RAM come sequenza di processi
L’immagine seguente serve a visualizzare meglio il primo caso:
Come si vede il primo processo in esecuzione sulla RAM è (sempre) il sistema operativo (che è anche il primo grosso programma che parte all’avvio del computer).
La RAM come sequenza di celle o locazioni
Per comprendere i concetti del secondo caso guardiamo invece la seguente:
Come si vede, la RAM è suddivisa in celle o locazioni ed ogni cella è individuata da un numero che identifica univocamente la cella chiamato indirizzo. La memoria si chiama appunto ad accesso diretto proprio perché, la CPU accede alle celle della RAM in maniera diretta tramite un indirizzo (a differenza delle memorie ad accesso semi-diretto o sequenziale) che passa attraverso il Bus degli indirizzi.
Riassumendo:
- cella o locazione:
- spazio della RAM che contiene (parte di) istruzione o dato
- indirizzo:
- numero che identifica univocamente la cella
Nella figura, 5 è un dato, mentre: a = 3 + b
è una istruzione che presuppone l’esistenza di due varibili: a e b; queste due variabili a loro volta sono contenute in qualche locazione (o più spesso insieme di locazioni) della RAM prima definita.
Infine, come si vede, una cella occupa un byte (8 bit); questo vuol dire che ogni singolo dato o ogni istruzione occuperà (quasi sempre) più di una cella. Infatti 8 bit sono spesso troppo pochi per contenere dati completi: un byte può contenere ad esempio un carattere in codifica ASCII ma non di più).
Per concludere si noti che ovviamente i due modi non sono separati nel senso che ogni processo occupa un certo insieme di indirizzo chiamato appunto: spazio di indirizzamento.