linguaggi/s02/20260226.md
... ...
@@ -0,0 +1,107 @@
1
+# Gestione memoria (slide 36)
2
+
3
+scrivi le def di regola di scope dinamico e statico in s02
4
+
5
+### Il display
6
+
7
+Alternativa alla catena statica per implementare scope statico (e' piu veloce ma richiede mem in piu (per l'array))
8
+
9
+Si puo ridurre il costo h ad una costante usando la tecnica del display
10
+
11
+- la catena statica viene rappresentata mediante un array
12
+ - i-esimo elem dell array = punt all'RdA del sottoprogramma di livello di annidamento i attivo per ultimo
13
+- quindi: - `Display[1]=RdA` di una proc P di top level - `Display[2]=RdA` di una proc Q dichiarata in P - ... - `Display[2]=RdA` della proc attiva in questo momento (dichiarata dentro quella che si trova in `Display[i-1]`)
14
+
15
+Se il sottoprogramma corrente è annidato a livello i, un oggetto che è in uno scope esterno di h livelli può essere trovato guardando il punt a RdA nel display alla posizione j = i - h
16
+
17
+Esempio:
18
+![20260226_2026-02-26_13-27-05](assets/imgs/20260226_2026-02-26_13-27-05.png)
19
+
20
+Se proc corrente annidata a livello i, lo scope esterno di h livelli si ottiene in `Display[i - h]`
21
+Con Display in memoria un oggetto è trovato con due accessi, uno per il display e uno per l’oggetto
22
+![20260226_2026-02-26_13-27-34](assets/imgs/20260226_2026-02-26_13-27-34.png)
23
+
24
+![20260226_2026-02-26_13-30-25](assets/imgs/20260226_2026-02-26_13-30-25.png)
25
+
26
+Display o catena statica ?
27
+• Rari annidamenti di profondità > 3, quindi lunghezza max di catena statica = 3
28
+• Tecniche di ottimizzazione possono migliorare gli accessi alle catene usate più frequentemente (tenendo nei registri i puntatori)
29
+• Il display è più costoso da mantenere della catena statica nella sequenza di chiamata ...
30
+• Conclusione: display poco usato nelle implementazioni moderne…
31
+
32
+### Scope dinamico
33
+
34
+Con scope dinamico l’associazione nomi-oggetti denotabili dipende
35
+– dal flusso del controllo a run-time
36
+– dall’ordine con cui i sottoprogrammi sono chiamati - La regola generale è semplice: l’associazione corrente per un nome è quella determinata per ultima nell’esecuzione (non ancora distrutta).
37
+
38
+Implementazione ovvia:
39
+
40
+- Memorizzare i nomi negli RdA
41
+- Ricerca per nome risalendo la pila
42
+- Esempio: chiamate A,B,C,D
43
+
44
+![20260226_2026-02-26_13-32-49](assets/imgs/20260226_2026-02-26_13-32-49.png)
45
+
46
+Variante: A-list
47
+Le associazioni sono memorizzate in una struttura apposita (manipolata come una pila)
48
+Es: chiamate A B C D
49
+![20260226_2026-02-26_13-34-18](assets/imgs/20260226_2026-02-26_13-34-18.png)
50
+(in grigio le associazioni non attive)
51
+In pratica se ho x a livello A e x al livello B, quando parto da B o da sotto B risalendo trovo x(x deve essere attiva = visibile dal blocco corrente)
52
+quando mi sposto (es da A a C) devo rendere non visibili le var di altri blocchi (es. B non e' visibile da C o D)
53
+
54
+Per ogni record che alloco sulla pila devo esplicitare le var visibili
55
+nei libri la regola di visibilita' viene prima della regola di scope (nella realta' dipende)
56
+
57
+le associazioni non visibili lo sono per due casi:
58
+
59
+1. sono state riscritte
60
+2. sono invisibili secondo la regola di visibilita'
61
+
62
+Costi delle A-list
63
+
64
+- Molto semplice da implementare
65
+- Occupazione mem (nomi presente esplicitamente)
66
+- costo di gestione (ingresso uscita da blocco e inserzione rimozione blocchi dalla pila)
67
+- tempo di accesso (lineare nella profondita della a list)
68
+
69
+Possiamo ridurre il tempo d’accesso medio, aumentando il tempo di ingresso/uscita da blocco..
70
+
71
+#### Tabella centrale dei riferimenti, CRT
72
+
73
+evita le lunghe scansioni delle A list
74
+una tabella mantiene tutti i nomi distinti del programma
75
+
76
+- se i nomi sono noti statitcamente si puo accedere all elemento della tabella in tempo costante
77
+- altrimenti accesso hash
78
+
79
+Ad ogni nome e' associata la lista delle associazioni di quel nome
80
+
81
+- la piu recente e' la prima
82
+- le altre (disattivate) seguono
83
+
84
+Tempo di accesso costante
85
+
86
+![20260226_2026-02-26_14-19-03](assets/imgs/20260226_2026-02-26_14-19-03.png)
87
+
88
+![20260226_2026-02-26_14-22-03](assets/imgs/20260226_2026-02-26_14-22-03.png)
89
+
90
+nell'ultima tabella v e'dichiarato non visibile (0)
91
+
92
+#### Costi della CRT
93
+
94
+Gestione più complessa di A-list
95
+Meno occupazione di memoria:
96
+– se nomi noti staticamente, i nomi non sono necessari
97
+– in ogni caso, ogni nome memorizzato una sola volta
98
+
99
+Costo di gestione
100
+– ingresso/uscita da blocco (manipolazione di tutte le liste dei nomi presenti nel blocco)
101
+Tempo di accesso
102
+– costante (due accessi indiretti)
103
+Possiamo ridurre il tempo d’accesso medio, aumentando il tempo di ingresso/uscita da blocco...
104
+
105
+Es. esrcizio
106
+
107
+Si assuma che un generico linguaggio imperativo a blocchi. Il blocco A contenga una chiamata alla funzione f. Il numero dei record di attivazione (RdA) presenti run time sulla pila fra il RdA di A e quello della chiamata di f e' fissato staticamente o puo valere dinamicamente? Motivare la risoposta
linguaggi/s02/assets/imgs/20260226_2026-02-26_13-27-05.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_13-27-05.png differ
linguaggi/s02/assets/imgs/20260226_2026-02-26_13-27-34.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_13-27-34.png differ
linguaggi/s02/assets/imgs/20260226_2026-02-26_13-30-25.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_13-30-25.png differ
linguaggi/s02/assets/imgs/20260226_2026-02-26_13-32-49.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_13-32-49.png differ
linguaggi/s02/assets/imgs/20260226_2026-02-26_13-34-18.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_13-34-18.png differ
linguaggi/s02/assets/imgs/20260226_2026-02-26_14-19-03.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_14-19-03.png differ
linguaggi/s02/assets/imgs/20260226_2026-02-26_14-22-03.png
... ...
Binary files /dev/null and b/linguaggi/s02/assets/imgs/20260226_2026-02-26_14-22-03.png differ