c. gaibisso programmazione di calcolatori lezione viii il modello di memoria programmazione di...

15
C. Gaibisso Programmazione di Programmazione di Calcolatori Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

Upload: alda-vecchi

Post on 02-May-2015

214 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso Programmazione di Programmazione di CalcolatoriCalcolatori

Lezione VIIIIl modello di memoria

Programmazione di Calcolatori: Il modello di memoria 1

Page 2: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Il modello di memoriaIl modello di memoria

Programmazione di Calcolatori: Il modello di memoria 2

● ogni locazione memorizza una sequenza di 8 bit

● ogni locazione è univocamente identificata da un valore numerico detto indirizzo

● ad ogni locazione è associato un flag che indica se la locazione è correntemente in uso o è invece disponibile

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

10100000 X

● un insieme di locazioni

In uso

Disponibile

x

Page 3: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

VariabiliVariabili

Programmazione di Calcolatori: Il modello di memoria 3

● una variabile è un insieme di locazioni contigue in memoria

● il numero delle locazioni allocate per una variabile è funzione del tipo della variabile

● ogni variabile è identificata da una stringa alfa-numerica detta nome della variabile

● ogni variabile memorizza un valore

● il tipo della variabile è il tipo del valore memorizzato

A

● l’indirizzo di una variabile è l’indirizzo della prima di tali locazioni

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

x

x

xxxx

3

intero 4 locazioni x un valore

intero

Page 4: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Stato della memoriaStato della memoria

Programmazione di Calcolatori: Il modello di memoria 4

• Molto informalmente:

è una foto del contenuto della memoria ad un certo istante

• Molto meno informalmente:è determinato dall’insieme delle

quadruple

(nomevar, tipovar, valorevar,

indirizzovar)

Page 5: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Stato della memoriaStato della memoria

Programmazione di Calcolatori: Il modello di memoria 5

xx

xx

xx

xx

3A

B

3A

2B2

Stato1 Stato2

Stato1 = Stato2?

xx

xx

xx

xx

2A

B

2A

2C2

Stato1 Stato2

Stato1 = Stato2?

SI

NO

Page 6: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Stato della memoriaStato della memoria

Programmazione di Calcolatori: Il modello di memoria 6

xx

xx

xx

xx

2A

B

2A

3B2

Stato1 Stato2

Stato1 = Stato2?

NO

xx

xx

xx

xx

2A

B

2A

2.0B2

Stato1 Stato2

Stato1 = Stato2?

NO

Page 7: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Stato della memoriaStato della memoria

Programmazione di Calcolatori: Il modello di memoria 7

xx

xx

xx

xx

2A

B

2A

2B2

Stato1 Stato2

Stato1 = Stato2?

x

x

NO

2834

2835

2836

2837

2838

2839

2840

2834

2835

2836

2837

2838

2839

2840

x

x

x

x

xx

xx

Stato1 Stato2

Stato1 = Stato2?

NO

Page 8: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Definizione di una variabileDefinizione di una variabile

Programmazione di Calcolatori: Il modello di memoria 8

• Definizione di una variabile:

• Modifiche allo stato della memoria:

tipo_variabile nome_variabile

1. si riserva il numero di locazioni contigue in memoria necessario a memorizzare un valore di tipo tipo_variabile;

2. si associa il nome nome_variabile alle locazioni riservate;

3. si associa alla variabile il tipo tipo_variabile.

Page 9: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Definizione di una variabileDefinizione di una variabile

Programmazione di Calcolatori: Il modello di memoria 9

int y;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

x

x

xxxx

y

intero

• Esempio:

Page 10: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso

Rilascio di memoria allocataRilascio di memoria allocata

Programmazione di Calcolatori: Il modello di memoria 10

avviene rendendo di nuovo disponibili le celle allocate per la variabile

{

{

int A;

….

}

}

• Esempio: 2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

xxxx

A

• Rilascio della memoria:

Page 11: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso Assegnamento di valori a Assegnamento di valori a variabilivariabili

Programmazione di Calcolatori: Il modello di memoria 11

• Assegnamento:

nome_variabile = espressione

Attenzione:il tipo di nome_variabile e il tipo di espressione “devono” essere gli

stessi

• Modifiche allo stato della memoria:

1. si valuta il valore di espressione;

2. si sostituisce tale valore al valore memorizzato da nome_variabile.

Page 12: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite nomenome

Programmazione di Calcolatori: Il modello di memoria 12

• Esempio:

B = A+C;-4 3

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

Cxxxx

x

A

3xxxx

xxB8

-4

-1

Page 13: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso Accesso all’indirizzo di una Accesso all’indirizzo di una variabilevariabile

Programmazione di Calcolatori: Il modello di memoria 13

• L’operatore &:

&nome_variabile

• Valore restituito:

l’indirizzo di nome_variabile;

B = &A;2839

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

A3xxxx

Bxx2839

puntatore

Page 14: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite indirizzoindirizzo

Programmazione di Calcolatori: Il modello di memoria 14

• L’operatore *:

A=*B+1;

3

*nome_puntatore

• Effetto:

equivale al nome della variabile il cui indirizzo è in nome_puntatore;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

A3xxxx

Bxx2839

4

A

• Esempio:

Page 15: C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1

C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite indirizzoindirizzo

Programmazione di Calcolatori: Il modello di memoria 15

• Esempio:2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

Cxxxx

Bx2837

A

3

xxxx

4

*B = A+C;C 4 3 7