sistemi/s02/20260219.md
... ...
@@ -0,0 +1,263 @@
1
+#
2
+
3
+### Interrupt
4
+
5
+Meccaniscmo che permette l'interruzione del normale diclo di esecuzione della cpu
6
+
7
+**Caratteristiche**
8
+
9
+- introdotti per aumentare l'efficienza di un sistema di calcolo
10
+- permettono ad un so di intervenire durante l'esecuzione di un programma, allo scopo di gestire efficacemente le risorse del calcolatore (processore memoria dispositivi di i/o)
11
+- possono essere sia hw che sw (es. divisioni per zero, system calls)
12
+- possono essere mascherati (ritardati) se la cpu sta svolgendo compiti non interrompibili
13
+
14
+#### Interrupt vs trap
15
+
16
+Interrupt hw (e' la cpu che controlla il bus, se la cpu vuole parlare con il controller lo puo fare.)
17
+L'interrupt serve solo se e' una periferica che vuole parlare con il so
18
+
19
+Intterrupt hw:
20
+
21
+- Eventi hw asincroni non causati dal processo in esecuzione (es. dispositivo di i/o, interval timer)
22
+- Gli interrupt hw sono generati dai controller dei dispositivi che mandano (elevano) gli interrupt per indicare al processore che sono avvenuti eventi che necessitano di attenzione (es. fine di i/o)
23
+
24
+Interrupt sw
25
+
26
+- causato dal programma
27
+- es (divisioni per zero o syscall)
28
+ Il so per attivare una operazione di i/o comunica col controller usando il bus di sistema. L'interrupt avviene solo al termine dell'operazione.
29
+
30
+#### Gestione interrupt
31
+
32
+Cosa succede in seguito a un interrupt:
33
+
34
+- un segnale "interrupt request" vine spedito al processore
35
+- il processore sospende le operazioni del processo corrente, salta ad un particolare indirizzo di memoria contenente ls routine di gestione dell'interrupt (_interrupt handler_)
36
+- l'interrupt handler gestisce nel modo opportuno l'interrupt e ritorna il controllo al processo interrotto (o a un altro processo, nel caso di scheduling)
37
+- il processore riprende l'esecuzione del processo interrotto
38
+ ![20260219_2026-02-19_15-48-58](assets/imgs/20260219_2026-02-19_15-48-58.png)
39
+
40
+Schema dell'interrupt
41
+
42
+1. Un segnale di interrupt request viene spedito alla cpu
43
+2. La cpu finisce l'esecuzione dell'istruzione corrente
44
+3. la cpu verifica la presenza di un segnale di interrupt
45
+
46
+![20260219_2026-02-19_15-51-37](assets/imgs/20260219_2026-02-19_15-51-37.png)
47
+
48
+4. preparazione al trasferimento di controlla dal programma all'interrupt handler
49
+ - metodo 1: salvataggio dei registri critici (es. il program counter e registri di stato (why?))
50
+ - metodo 2: scambio di stato (fotografia dello stato del processore)
51
+5. Selezione dell'interrupt handler appropriato
52
+ - A seconda dell'architettura, vi si puo' essere un singolo interrupt handler, uno per ogni tipo di interrupt o uno per dispositivo.
53
+ - la selezione avvuene tramite **interrupt vector**
54
+6. Caricamento del PC con l'indirizzo per continuare l'esecuzione del programma da dove era stato interrotto.
55
+7. salvataggio dello stato del processore (salvataggio delle info critiche non salvate automaticamente dai meccanismi hw di gestione interrupt)
56
+8. gestione dell'interrupt
57
+ - lettura delle info di controllo proveniente dal dispositivo
58
+ - eventualmente, spedizione di ulteriori info al dispositivo stesso
59
+9. ripristino dello stato del processore (op inversa del punto 7)
60
+10. ritorno del controllo al processo in secuzione (o ad un altro processo se necessario)
61
+
62
+#### SO interrupt driven
63
+
64
+I so moderni sono detti interrupt driven. Il codice del so entra in funzione come interrupt handler. Sono gli interrupt (o i trap) ch eguidano l'avvicendamento dei processi.
65
+
66
+Esiste la possibilita' che avvengano interrupt multipli
67
+
68
+- ad esempio, originati da dispositivi diversi
69
+- un'interrupt puo' avvenire durante la gestione di un interrupt precedente (viene rimandato alla fine della gestione del interrupt corrente)
70
+
71
+Due approcci possibili:
72
+
73
+- disabilitazione degli interrupt
74
+- interrupt annidati
75
+
76
+#### Disabilitazione delgi interrupt
77
+
78
+Durante l'esecuzione di un interrupt handler (ulteriori segnali di interrupt vengono ignorati), i segnali corrispondenti restano pendenti
79
+Gli interrupt vengono riabilitati prima di riattivare il processo interrotto
80
+Il processo verifica quindi se vi sono ulteriori interrupt, e in caso attiva l'interrupt handler corrispondente
81
+
82
+Vantaggi e svantaggi
83
+Approccio semplice (interrupt gestiti in modo sequenziale)
84
+Non tiene contro di gestioni "time critical"
85
+
86
+![20260219_2026-02-19_16-15-40](assets/imgs/20260219_2026-02-19_16-15-40.png)
87
+
88
+E' possibile definire proprieta diverse per gli interrupt
89
+Un interrupt di priorita inferiore puo essere interrotto da un interrupt di priorita superiore
90
+E' necessario prevedere un meccanismo di salvataggio e ripristino dell'esecuzione adeguato
91
+
92
+Vantaggi e svantaggi
93
+Dispositivi veloci possono essere serviti prima (es. scheda di rete)
94
+Approccio complesso
95
+Occorrono stack separati
96
+![20260219_2026-02-19_16-18-22](assets/imgs/20260219_2026-02-19_16-18-22.png)
97
+
98
+Comunicazione tra processore e dispositivi di I/O
99
+Il controller governa il dialogo con il dispositivo fisico
100
+
101
+Es.
102
+
103
+- il controller di un disco accetta una richiesta per volta
104
+- l'accodamento delle richieste in attesa e' a carico del so
105
+
106
+Due modalita
107
+
108
+- Programmed I/O
109
+- Interrupt-driven I/O
110
+
111
+Programmed I/O (obsoleto)
112
+
113
+- Operazione di input
114
+- la CPU carica (tramite il bus) i parametri della richiesta di input in appositi registri del controller (registri comando)
115
+- il dispositivo
116
+ - esegue la richiesta
117
+ - il risultato dell'operazione viene memorizzato in un apposito buffer locale sul controller
118
+ - il completamento dell'operazione viene segnalato attraverso appositi registri di status
119
+ - il S.O. attende (busy waiting/polling) che il comando sia completato verificando periodicamente il contenuto del registro di stato
120
+ - infine, la CPU copia i dati dal buffer locale del controller alla memoria
121
+
122
+Interrupt-driven I/O
123
+Eliminazione del problema del polling
124
+Operazione di input
125
+
126
+- La CPU carica (tramite il bus) i parametri della richiesta di input in appositi registri del controller (registri comando)
127
+- il so sospende l'exec del process oche ha eseguito l'operaizone di input ed esegue un altro processo
128
+- il dispositivo
129
+ - esegue la richiesta
130
+ - il risultato dell'operazione viene memorizzato in un apposito buffer locale sul controller
131
+ - il completamento dell'operazione viene segnalato attraverso interrupt
132
+- al ricevimento dell'interrupt, la CPU copia i dati dal buffer locale del controller alla memoria
133
+- NB: l’interrupt segnala la fine dell’operazione di I/O
134
+
135
+Programmed I/O e Interrupt-Driven I/O
136
+Nel caso di operazioni di output
137
+
138
+- il procedimento è similare:
139
+- i dati vengono copiati dalla memoria ai buffer locali
140
+- questa operazione viene eseguita prima di caricare i parametri della richiesta nei registri di comando dei dispositivi
141
+
142
+Svantaggi degli approcci precedenti
143
+
144
+- il processore spreca parte del suo tempo nella gestione del trasferimento dei dati
145
+- la velocità di trasferimento è limitata dalla velocità con cui il processore riesce a gestire il servizio
146
+
147
+#### Direct memory access (DMA)
148
+
149
+Il SO:
150
+
151
+- attiva l'operazione di I/O specificando l'indirizzo in memoria di destinazione (Input) o di provenienza (Output) dei dati
152
+- Il controller del dispositivo prende (output) o pone (input) i dati per l’operazione di I/O direttamente dalla memoria centrale.
153
+- l'interrupt specifica solamente la conclusione dell'operazione di I/O
154
+ Vantaggi e svantaggi
155
+ c'e contesa nell'accesso al bus
156
+- device driver piu semplice
157
+- efficace perche la CPU non accede al bus ad ogni ciclo di clock
158
+
159
+#### Memoria
160
+
161
+Memoria centrale (RAM)
162
+
163
+- Assieme ai registri, l'unico spazio di memorizzazione che puo essere acceduto direttamente dal processore
164
+- accesso tramite LOAD/STORE
165
+- Volatile
166
+- Nei sistemi moderni accesso tramite MMU (trasforma indirizzi logici in indirizzi fisici)
167
+
168
+Memoria ROM
169
+
170
+#### Memory mapped I/O
171
+
172
+Un dispositivo e' completamente indirizzabile tramite bus.
173
+
174
+- i dati gestiti dal dispositivo vengono mappati su un insieme di indirizzi i direttamente accessibili tramite il bus di sistema
175
+- una lettura o scrittura su questi indirizzi causa il trasferimento di dati da o verso il dispositivo
176
+ Es. video grafico nei PC
177
+
178
+Vantaggi e svantaggi
179
+
180
+- gestione molto semplice e lineare
181
+- necessita di tecniche di sincronizzazione di accesso
182
+
183
+Dischi
184
+
185
+Dispositivi che consentono la memorizzazione non volatile dei dati
186
+Accesso diretto (random, non sequenziale)
187
+Per individuare un dato sul disco (dal punto di vista fisico) occorre indirizzarlo in termini di cilindro, settore, testina.
188
+
189
+Operazioni gestite dal controller
190
+
191
+- READ (head, sector)
192
+- WRITE (head, sector)
193
+- SEEK (cylinder) operazione piu costosa (cambio di testina)
194
+
195
+SSD - SDcard
196
+dispositivi per la memorizzazione non volatile dei dati
197
+Hanno un numero di cicli di scrittura limitato
198
+Si leggono a blocchi
199
+Si scrivono a banchi (numerosi blocchi)
200
+
201
+#### Gerarchia di memoria
202
+
203
+Tradeoff tra quantita, velocita e costo
204
+
205
+soluzione: utilizzare una gerarchia di memoria
206
+
207
+![20260219_2026-02-19_17-04-43](assets/imgs/20260219_2026-02-19_17-04-43.png)
208
+
209
+Cache
210
+
211
+- consiste nel memorizzare parzialmente i dati di una memoria in una seconda più costosa ma più efficiente
212
+- se il numero di occorrenze in cui il dato viene trovato nella cache (memoria veloce) è statisticamente rilevante rispetto al numero totale degli accessi, la cache fornisce un notevole aumento di prestazione
213
+
214
+Meccanismi di caching
215
+hardware:
216
+
217
+- ad es. cache CPU; politiche non modificabili dal S.O.
218
+ software:
219
+- ad es. cache disco; politiche sotto controllo del S.O.
220
+
221
+**Problemi da considerare nel S.O.**
222
+algoritmo di replacement:
223
+
224
+- la cache ha dimensione limitata; bisogna scegliere un algoritmo
225
+ che garantisca il maggior numero di accessi in cache
226
+ coerenza:
227
+- gli stessi dati possono apparire a diversi livelli della struttura di
228
+ memoria
229
+
230
+#### Protezione HW
231
+
232
+I sistemi multiprogrammati e multiutente richiedono la presenza di meccanismi di protezione (bisogna evitare che i processi interferiscano con il sistema operativo)
233
+
234
+**Modalita utente/kernel**
235
+
236
+- Modalità kernel / supervisore / privilegiata / ring 0:
237
+ - I processi in questa modalita hanno accesso a tutte le istruzioni incluse quelle **pivilegiate** che permettono di gestire totalmente il sistema (super hackerabile)
238
+- Modalita utente - i processi in modalita utente non hanno accesso alle istruzioni privilegiate
239
+ Si usa un "Mode bit" nello status register per distinguere fra modalità utente e modalità supervisore
240
+
241
+**Funzionamento**
242
+
243
+- alla partenza, il processore è in modalità kernel
244
+- viene caricato il sistema operativo (bootstrap) e si inizia ad eseguirlo
245
+- quando passa il controllo ad un processo utente, il S.O.
246
+- cambia il valore del mode bit e il processore passa in modalità utente
247
+- tutte le volte che avviene un interrupt, l'hardware passa da modalità utente a modalità kernel
248
+
249
+Nota: tutte le istruzioni input output devono essere privilegiate (es. accesso a mem secondaria che ospita un file system, vogliamo evitare che un processo possa accedere e modificare il file system)
250
+
251
+Protezione Memoria
252
+La protezione non è completa se non proteggiamo anche la memoria
253
+Senza protezione della mem i processi utente potrebbero:
254
+
255
+- modificare il codice o i dati di altri processi utenti
256
+- modificare il codice o i dati del sistema operativo
257
+- modificare l'interrupt vector, inserendo i propri gestori degli interrupt
258
+ La protezione avviene tramite la Memory Management Unit (MMU)
259
+
260
+Protezione HW - System call
261
+finire ultime slide
262
+
263
+![20260219_2026-02-19_17-29-03](assets/imgs/20260219_2026-02-19_17-29-03.png)
sistemi/s02/assets/imgs/20260219_2026-02-19_15-48-58.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260219_2026-02-19_15-48-58.png differ
sistemi/s02/assets/imgs/20260219_2026-02-19_15-51-37.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260219_2026-02-19_15-51-37.png differ
sistemi/s02/assets/imgs/20260219_2026-02-19_16-15-40.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260219_2026-02-19_16-15-40.png differ
sistemi/s02/assets/imgs/20260219_2026-02-19_16-18-22.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260219_2026-02-19_16-18-22.png differ
sistemi/s02/assets/imgs/20260219_2026-02-19_17-04-43.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260219_2026-02-19_17-04-43.png differ
sistemi/s02/assets/imgs/20260219_2026-02-19_17-29-03.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260219_2026-02-19_17-29-03.png differ