150 likes | 303 Vues
Programmazione di Calcolatori. Lezione VIII Il modello di memoria. Il modello di memoria. In uso. x. Disponibile. 2834. ● un insieme di locazioni. 2835. ● ogni locazione è univocamente identificata da un valore numerico detto indirizzo. 2836. 2837. 2838. 2839.
E N D
Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria
Il modello di memoria In uso x Disponibile 2834 ● un insieme di locazioni 2835 ● ogni locazione è univocamente identificata da un valore numerico detto indirizzo 2836 2837 2838 2839 ● ogni locazione memorizza una sequenza di 8 bit 2840 2841 ● ad ogni locazione è associato un flag che indica se la locazione è correntemente in uso o è invece disponibile 10100000 2842 X 2843 2844 2855 Programmazione di Calcolatori: Il modello di memoria
Variabili ● una variabile è un insieme di locazioni contigue in memoria x 2834 ● ogni variabile è identificata da una stringa alfa-numerica detta nome della variabile 2835 x 2836 2837 2838 ● l’indirizzo di una variabile è l’indirizzo della prima di tali locazioni x 2839 A 3 x 2840 x 2841 ● ogni variabile memorizza un valore x 2842 ● il tipo della variabile è il tipo del valore memorizzato 2843 x 2844 ● il numero delle locazioni allocate per una variabile è funzione del tipo della variabile 2855 intero Programmazione di Calcolatori: Il modello di memoria 4
Stato della memoria 2834 2834 2835 2835 2836 2836 2837 2837 2838 2838 2839 2839 2840 2840 • Molto informalmente: è una foto del contenuto della memoria ad un certo istante • Molto meno informalmente: è definito dall’insieme delle locazioni di memoria in uso, dall’insieme delle variabili, dal valore e dalle locazioni ad esse assegnate x x Stato1 = Stato2? x x NO x x x x Stato1 Stato2 Programmazione di Calcolatori: Il modello di memoria
Stato della memoria Stato1 = Stato2? x x x x A A 2 3 A A 2 3 x x x x Stato1 = Stato2? x x x x SI B B 2 2 C B 2 2 x x x x Stato1 Stato1 Stato2 Stato2 NO Programmazione di Calcolatori: Il modello di memoria
Stato della memoria Stato1 = Stato2? Stato1 = Stato2? x x x x A A 2 2 A A 2 2 x x x x x x x x B B 2 2 B B 2.0 3 x x x x Stato1 Stato1 Stato2 Stato2 NO NO Programmazione di Calcolatori: Il modello di memoria
Stato della memoria x Stato1 = Stato2? x x A 2 A 2 x x x NO x x B 2 B 2 x x Stato1 Stato2 Programmazione di Calcolatori: Il modello di memoria
Definizione di una variabile • Definizione di una variabile: tipo_variabile nome_variabile • Modifiche allo stato della memoria: si riserva il numero di locazioni contigue in memoria necessario a memorizzare un valore di tipo tipo_variabile; si associa il nome nome_variabile alle locazioni riservate; si associa alla variabile il tipo tipo_variabile. Programmazione di Calcolatori: Il modello di memoria
Definizione di una variabile x x x x • Esempio: x 2834 2835 x 2836 2837 int y; 2838 2839 2840 y 2841 2842 2843 x 2844 2855 intero Programmazione di Calcolatori: Il modello di memoria
Rilascio di memoria allocata 2834 2835 2836 x 2837 A x 2838 x 2839 x 2840 2841 2842 2843 2844 2855 • Rilascio della memoria: avviene rendendo di nuovo disponibili le celle allocate per la variabile • Esempio: { { int A; …. } } Programmazione di Calcolatori: Il modello di memoria
Assegnamento di valori a variabili • Assegnamento: nome_variabile = espressione • Modifiche allo stato della memoria: si valuta il valore di espressione; si sostituisce tale valore al valore memorizzato da nome_variabile. Attenzione: il tipo di nome_variabile e il tipo di espressione “devono” essere gli stessi Programmazione di Calcolatori: Il modello di memoria
Accesso alle variabili tramite nome x 2834 x 2835 2836 2837 x 2838 C 3 x 2839 x 2840 x 2841 x 2842 A x 2843 x 2844 x 2855 • Esempio: B 8 -1 x x -4 3 B = A+C; -4 Programmazione di Calcolatori: Il modello di memoria
Accesso all’indirizzo di una variabile 2834 2835 2836 2837 2838 x 2839 3 A x 2840 x 2841 x 2842 2843 2844 2855 • L’operatore &: &nome_variabile • Valore restituito: B x l’indirizzo di nome_variabile; 2839 x B = &A; 2839 puntatore Programmazione di Calcolatori: Il modello di memoria
Accesso alle variabili tramite indirizzo 2834 2835 2836 2837 2838 x 2839 3 A x 2840 x 2841 x 2842 2843 2844 2855 • L’operatore *: *nome_puntatore 2839 • Effetto: x B equivale al nome della variabile il cui indirizzo è in nome_puntatore; x 4 • Esempio: 3 A A=*B+1; Programmazione di Calcolatori: Il modello di memoria
Accesso alle variabili tramite indirizzo x 2834 B 2837 x 2835 2836 x 2837 3 C x 2838 x 2839 x 2840 2841 x 2842 A x 2843 x 2844 x 2855 • Esempio: C 4 3 7 *B = A+C; 4 Programmazione di Calcolatori: Il modello di memoria