sistemi/s02/assets/imgs/memoria_2026-03-11_12-35-34.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/memoria_2026-03-11_12-35-34.png differ
sistemi/s02/assets/imgs/memoria_2026-03-11_12-37-58.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/memoria_2026-03-11_12-37-58.png differ
sistemi/s02/assets/imgs/memoria_2026-03-11_13-01-58.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/memoria_2026-03-11_13-01-58.png differ
sistemi/s02/assets/imgs/memoria_2026-03-11_13-02-48.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/memoria_2026-03-11_13-02-48.png differ
sistemi/s02/assets/imgs/memoria_2026-03-11_13-33-36.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/memoria_2026-03-11_13-33-36.png differ
sistemi/s02/memoria.md
... ...
@@ -0,0 +1,190 @@
1
+# Memoria
2
+
3
+Memory manager: la parte del so che gestisce la mem principale si chiama memory manager
4
+
5
+Compiti di un mem manager: tenere traccia della mem libera e occupata, allocare mem ai processi e deallocarla quando non piu necessaria
6
+Nota: in alcuni casi il mem manager puo gestire anche parte della mem secondaria al fine di emulare mem principale
7
+
8
+Nota: il mem manager e' software (la Memory Manager Unit, MMU e'hw)
9
+
10
+## Binding, loading, linking
11
+
12
+Con il termine binding si indica l'associazione di indirizzi logici di mem (nomi di variabili, laber) ai corrispondenti indirizzi fisici.
13
+
14
+il bindig puo avvenire:
15
+
16
+- durante la compilazione
17
+- durante il caricamento
18
+- durante l'esecuzione
19
+
20
+### Binding durante la compilazione
21
+
22
+Gli indirizzi vengono allocati al momento della compilazione e resteranno gli stessi ad ogni exec del programma. Il codice generato e' chiamato **assoluto**
23
+Es: codice per microcontrollori, kernel, file COM, in MS-DOS
24
+
25
+vantaggi
26
+
27
+- non richiede hardware speciale
28
+- semplice
29
+- molto veloce
30
+
31
+svantaggi
32
+
33
+- non funziona con la multiprogrammazione
34
+
35
+### Binding durante il caricamento
36
+
37
+il codice generato dal compilatore non contiene indirizzi assoluti ma relativi (al PC oppure ad un indirizzo base). Il codice divanta **ricollocabile**
38
+
39
+Durante il caricamento il loader si preoccupa di aggiornare tutti i riferimenti agli indirizzi di memoria coerentemente al punto iniziale di caricamento
40
+
41
+vantaggi
42
+ permette di gestire multiprogrammazione
43
+ non richiede uso di hardware particolare
44
+ svantaggi
45
+ richiede una traduzione degli indirizzi da parte del loader, e quindi
46
+formati particolare dei file eseguibili
47
+![memoria_2026-03-11_12-35-34](assets/imgs/memoria_2026-03-11_12-35-34.png)
48
+
49
+vantaggi
50
+
51
+- permette di gestire multiprogrammazione
52
+- non richiede uso di hardware particolare
53
+
54
+svantaggi
55
+
56
+- richiede una traduzione degli indirizzi da parte del loader, e quindi
57
+- iormati particolare dei file eseguibili
58
+
59
+### Binding durante l'esecuzione
60
+
61
+L'individuazione dell'indirizzo di memoria effettivo viene effettuata durante l'esecuzione da un componente hardware apposito: la memory management unit (MMU) (che non e' il memory manager (MM))
62
+
63
+![memoria_2026-03-11_12-37-58](assets/imgs/memoria_2026-03-11_12-37-58.png)
64
+
65
+#### Indirizzi logici e indirizzi fisici
66
+
67
+Spazio di indirizzamento logico:
68
+
69
+- ogni processo è associato ad uno spazio di indirizzamento logico
70
+- gli indirizzi usati in un processo sono indirizzi logici, ovvero riferimenti a questo spazio di indirizzamento
71
+
72
+Spazio di indirizzamento fisico
73
+
74
+- ad ogni indirizzo logico corrisponde un indirizzo fisico
75
+- la MMU opera come una funzione di traduzione da indirizzi logici a indirizzi fisici
76
+
77
+#### Registro di rilocazione
78
+
79
+Se il valore del registro di rilocazione è R, uno spazio logico 0...Max viene tradotto in uno spazio fisico R...R+MAX
80
+
81
+esempio: nei processori Intel 80x86, esistono 4 registri base per il calcolo degli indirizzi (CS, DS, SS, ES)
82
+![memoria_2026-03-11_13-01-58](assets/imgs/memoria_2026-03-11_13-01-58.png)
83
+
84
+#### Registro di rilocazione e limite
85
+
86
+Il registro limite viene utilizzato per implementare meccanismi di protezione della memoria
87
+![memoria_2026-03-11_13-02-48](assets/imgs/memoria_2026-03-11_13-02-48.png)
88
+
89
+Viene controllato che l'indirizzo 897 sia minore o uguale al reg del reg limite (1000) se e'cosi allora va avanti.
90
+
91
+### Loading dinamico
92
+
93
+Consente di poter caricare alcune routine di libreria solo quando vengono richiamate
94
+
95
+Come viene implementato?
96
+
97
+- tutte le routine a caricamento dinamico risiedono su un disco (codice rilocabile), quando servono vengono caricate
98
+- le routine poco utili (e.g., casi di errore rari...) non vengono caricate in memoria al caricamento dell'applicazione
99
+
100
+Nota:
101
+
102
+- spetta al programmatore sfruttare questa possibilità
103
+- il sistema operativo fornisce semplicemente una libreria che implementa le funzioni di caricamento dinamico
104
+
105
+### Linking dinamico
106
+
107
+Linking statico:
108
+
109
+- se il linker collega e risolve tutti i riferimenti dei programmi...
110
+- le routine di libreria vengono copiate in ogni programma che le usa (e.g. printf in tutti i programmi C)
111
+
112
+Linking dinamico:
113
+
114
+- è possibile posticipare il linking delle routine di libreria al momento del primo riferimento durante l'esecuzione
115
+- consente di avere eseguibili più compatti
116
+- le librerie vengono implementate come codice reentrant:
117
+- esiste una sola istanza della libreria in memoria e tutti i processi eseguono il codice di questa istanza
118
+
119
+Vantaggi
120
+
121
+- risparmio di memoria
122
+- consente l'aggiornamento automatico delle versioni delle librerie
123
+- le librerie aggiornate sono caricate alla successiva attivazione dei programmi
124
+
125
+Svantaggi
126
+
127
+- può causare problemi di "versioning"
128
+- occorre aggiornare le versioni solo se non sono incompatibili
129
+- cambiamento numero di revisione e non di release
130
+
131
+Nota: dlopen: consente di caricare librerie dinamiche a run time. E’ il metodo per implementare plug-in
132
+
133
+## Allocazione contigua
134
+
135
+L'allocazione e' una delle funzioni principali del gestore di memoria
136
+Consiste nel reperire e assegnare uno spazio di mem fisica a:
137
+
138
+- un prog che viene attivato
139
+- per soddisfare ulteriori richieste effettuate dai prog durante la loro exec
140
+
141
+Allocazione contigua:
142
+
143
+- tutto lo spazio assegnato ad un processa deve essere formato da celle consecutive
144
+
145
+Allocazione non contigua:
146
+
147
+- è possibile assegnare a un processo aree di memorie separate
148
+
149
+Nota:
150
+
151
+- la MMU deve essere in grado di gestire la conversione degli indirizzi in modo coerente
152
+- esempio: la MMU basata su rilocazione gestisce solo allocazione contigua
153
+
154
+Allocazione Statica:
155
+
156
+- un processo deve mantenere la propria aerea di memoria dal caricamento alla terminazione
157
+- non è possibile rilocare il processo durante l'esecuzione
158
+
159
+Allicazione Dinamica:
160
+
161
+- durante l'esecuzione, un processo può essere spostato all'interno della memoria
162
+
163
+### Allocazione a partizioni fisse
164
+
165
+La memoria disponibile (quella non occupata dal s.o.) viene suddivisa in partizioni. Ogni processo viene caricato in una delle partizioni libere che ha dimensione sufficiente a contenerlo
166
+
167
+Caratteristiche
168
+
169
+- statica e contigua
170
+- vantaggi: molto semplice
171
+- svantaggi: spreco di memoria, grado di parallelismo limitato dal numero di partizioni
172
+
173
+![memoria_2026-03-11_13-33-36](assets/imgs/memoria_2026-03-11_13-33-36.png)
174
+
175
+**Gestione memoria**:
176
+
177
+- è possibile utilizzare una coda per partizione, oppure una coda comune per tutte le partizioni
178
+
179
+**Sistemi monoprogrammati**:
180
+
181
+- esiste una sola partizione, dove viene caricato un unico programma utente
182
+- esempio:
183
+ - MS-DOS free-DOS
184
+ - sistemi embedded
185
+
186
+## Paginazione
187
+
188
+## Segmentazione
189
+
190
+## Memoria virtuale