cdc9ae71015a77a3486ae999b6d209e8c585922f
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 | +  |
|
| 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 | + |
|
| 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 | + |
|
| 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 | + |
|
| 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 | + |
|
| 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 | + |
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 |