Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1
La volta scorsa Alcune definizioni di Sistema Operativo Distributore di risorse Controllore Interfaccia tra programmi utente e hardware Software interrupt driven Kernel e programmi di sistema Multiprogrammazione Time Sharing Principi Fondamentali dei SO Il kernel del SO include le routine fondamentali del sistema operativo Implementa funzioni di controllo Fornisce un insieme di servizi per i programmi utente E sempre in memoria Un interrupt forza la CPU ad eseguire codice kernel Un interrupt software e usato dai programmi per comunicare richieste di servizi al kernel 2
Principi Fondamentali dei SO (cont) La CPU puo operare in due modalita : Kernel mode CPU puo eseguire qualsiasi istruzione Kernel opera con la CPU in tale modalita, in modo da controllare le operazioni del calcolatore User mode CPU non puo eseguire istruzioni che determinino interferenze con altri programmi o con il SO CPU e in tale modalita quando esegue programmi utente Uno Schema del Computer 3
Il Computer (cont.) La CPU Memory Management Unit (MMU) Gerarchia di Memoria Input/Output Interrupt CPU Due elementi della CPU sono visibili ai programmi utente o al SO: General-purpose registers (GPRs) Anche detti program-accessible registers Contengono: dati, indirizzi, valori indice, o puntatori allo stack durante l esecuzione di un programma Control registers Contengono informazioni per il controllo delle operazioni della CPU L insieme dei registri di controllo e anche detto program status word (PSW) 4
Alcuni Campi della PSW Program Counter (PC) Condition Code (CC) Mode (M) Memory Protection Information (MPI) Interrupt mask (IM) Interrupt code (IC) Campo Descrizione Program Counter (PC) Condition Code (CC) Mode (M) Memory protection information (MPI) Interrupt mask (IM) Interrupt code (IC) Indirizzo della prossima istruzione da eseguire Usato per rappresentare alcune caratteristiche del risultato di operazioni aritmetiche recenti, per esempio se esso è <, =, o > 0. Utile nelle istruzioni condizionali. Bit indicante la modalità di esecuzione per la CPU: user mode (1) o kernel mode (0) Informazioni per la protezione della memoria assegnata al processo in esecuzione. Tipicamente una coppia di valori base e taglia Indica quali interrupt sono abilitati e quali no Descrive la condizione o l evento che ha causato l ultimo interrupt. Tale codice può essere utilizzato dalla routine di gestione dell interruzione La CPU (cont.) La CPU può operare in due modalità: Kernel mode CPU può eseguire qualsiasi istruzione Kernel opera con la CPU tale modalità, in modo da controllare le operazioni del calcolatore User mode CPU non può eseguire istruzioni che determinino interferenze con altri programmi o con il SO CPU è in tale modalita quando esegue programmi utente Il campo Mode (M) della PSW contiene 0 se la CPU è in modalità kernel (privileged mode) e 1 se è in user mode 5
Lo Stato della CPU I registri (GPR) e la PSW contengono tutte le informazioni che identificano le operazioni della CPU Stato della CPU Il Kernel salva lo stato della CPU ogni qual volta prelaziona la CPU durante l esecuzione di un programma Quando deve essere ripresa l esecuzione del progr. il Kernel ristabilisce lo stato della CPU con i valori salvati dei registri (GPR) e della PSW Esempio: Stato della CPU (cont.) (a) Un programma assembly con indicati gli indirizzi delle istruzioni (b) Lo stato della CPU dopo l istruzione COMPARE 6
Controllo sull Esecuzione dei Programmi 1. Quando un programma utente parte, PSW contiene : a. Program counter (PC) settato all indirizzo della 1a istruz. b. Mode (M), settato a user mode (1) c. Memory protection information (MPI) contiene indirizzo iniziale (base) in memoria e taglia (size) del programma d. Interrupt mask (IM), settato per abilitare gli interrupt 2. Quando un programma viene interrotto, lo stato della CPU (PSW e GPR) viene salvato Program table o process control block (PCB) 3. Quando il programma riparte, lo stato della CPU viene riportato ai valori salvati al momento dell interrupt Interazione tra SO, il Computer e i Programmi Utente SO interagisce con il computer per Riconoscere gli eventi, ed eseguire le azioni associate Ristabilire lo stato della CPU per far ripartire un programma dopo aver gestito un interrupt I Programmi necessitano dei servizi del SO, as esempio per eseguire operazioni di I/O I metodi (funzioni) per generare un interrupt e passare richieste al SO vengono detti system call Ci occuperemo del: Gestione degli Interrupt System Call 7
Interrupt Un evento e una situazione che necessita attenzione da parte del SO I progettisti associano un interrupt ad ogni evento Scopo: notificare al SO l occorrenza dell evento e permettergli di eseguire le azioni necessarie alla gestione dell evento Azione di Interrupt : salva lo stato della CPU e carica nuovi valori nei registri PSW e GPR CPU esegue le istruzione di una routine di servizio dell interrupt (ISR) del kernel Interrupt (cont.) Classi di Interrupt Classi di Interrupt I/O interrupt Timer interrupt Program interrupt Descrizione Causato da condizioni come completamento di un istruzione di I/O o il malfunzionamento dell I/O Generato a intervalli regolari, o quando e trascorso uno specifico intervallo (1) Causato da eccezioni/errori nell esecuzione di un istruzione (division-by-zer, overflow, indirizzamento e violazioni, etc) (2) Causato da istruzioni di interrupt software (system call, o richieste di servizio) 8
Area dei vettori di interrupt Area per il salvataggio delle PSW Passo Descrizione 1. Imposta codice interrupt L hardware per la gestione degli interrupt genera un codice e lo inserisce nel campo IC della PSW 2. Salvataggio PSW La PSW viene copiata in un area riservata al salvataggio della PSW. Anche i registri GPR vengono generalmente salvati. 3. Caricamento del vettore di interrupt Accesso al vettore di interrupt relativo alla classe di interrupt. Tale vettore viene copiato nei campi della PSW. In particolare il PC viene settato alla prima istruzione della routine di gestione dell interrupt del kernel Gestione di un interrupt Gestione degli Interrupt Il salvataggio del contesto salva lo stato della CPU per il programma Lo scheduler selezione un programma da eseguire Operazioni del kernel interrupt-driven 9
Gestione degli Interrupt (cont.) Alcune azioni tipiche per la gestione degli interrupt Interrupt Arithmetic exeption (es. divisione per 0) Memory protection violation Software Interrupt Completamento di I/O Timer Interrupt Azione di Gestione Abort (termina il programma) Abort Routine appropriata per gestire la richiesta, se possibile Trova il programma che aveva richiesto l I/O e annota che ora e pronto per la schedulazione Inizia una nuova operazione di I/O se ne esistono in coda Aggiorna l orologio di sistema, oppure esegui le operazioni associate se l interrupt e determinato dalla conclusione di un countdown Memoria Routine di gestione dei program interrupt Routine di gestione degli I/O interrupt vettore per I/O interrupt Al verificarsi di un I/O interrupt la CPU passa ad eseguire codice kernel vettore per I/O software Area vettori di interrupt Area di salvataggio Informaz. PSW <istruzione precedente> <prossima istruzione> La CPU riprende ad eseguire il codice del processo bloccato dall interrupt (a) Vettori e routine di gestione degli interrupt Prima dell Interrupt Dopo Dopo Dopo (b) Contenuto della PSW nei diversi momenti Esempio di gestione di interrupt di I/O con ritorno al processo interrotto 10
Gestione degli Interrupt (cont.) Due approcci alla gestione degli interrupt: (a) Impedire altri interrupt mentre se ne gestisce uno (b) Gestire livelli multipli di interrupt System Call Definizione: System Call e una richiesta che un programma fa al kernel mediante un interrupt software Memoria Codice compilato del programma Funzione di Libreria per apertura file Funzione di Libreria per lettura da file Esempi di system call: (a) il programma e (b) schema a tempo di esecuzione 11
Esempio: System Call in un Ipotetico SO CPU offre l istruzione SI per generare un interrupt software SO offre system call per ottenere l ora corrente Il Codice e 78: L Instruzione SI 78 causa un interrupt SW 78 viene messo nel campo IC di PSW prima di salvarla L Interrupt vector per interrupt software contiene aaa nel PC La CPU esegue la routine con indirizzo iniziale aaa Essa trova 78 nel campo IC e determina che il programma richiede l ora L ora viene memorizzata in un registro Alcune System call di Linux System Calls (cont.) 12
Memory Management Unit (MMU) La Memoria Virtuale (Virtual memory) da una visione della memoria illusoria, come se ci fosse piu memoria disponibile di quanto ce ne e fisicamente nel computer Implementata mediante allocazione non contigua e la MMU CPU passa gli indirizzi dei dati e delle istruzioni alla MMU Indirizzi logici MMU traduce indirizzi logici in indirizzi fisici Gerarchia della Memoria Mediante un organizzazione gerarchica della memoria si cerca di fornire una memoria di grande capacita e veloce, a basso costo Organizzazione di diverse tipologie di memoria con tempi di accesso e dimensioni diverse La CPU accede solo alla memoria piu veloce: la cache Se un determinato dato non e presente, viene caricato da una memoria di livello inferiore (piu lenta ma piu capiente) 13
Funzionamento di una memoria gerarchica Gerarchia della Memoria (cont.) Quando la CPU cerca un dato nella cache, si puo avere: (a) cache hit or (b) cache miss Hit ratio (h) della cache e la frazione di bytes indirizzati dalla CPU risultanti in un cache hit t ema = h t cache + (1 h) (t tra + t cache ) = t cache + (1 h) t tra dove t ema = tempo effettivo di accesso in memoria, t cache = tempo di accesso alla cache, and t tra = tempo impiegato per trasferire un blocco dalla memoria alla cache 14
Gerarchia della Memoria (cont.) Operazioni della memoria sono analoghe a quelle della cache Blocchi di bytes (pagine) vengono transferite dai dischi alla memoria e viceversa Ma, Gestione della Memoria e trasferimento dei blocchi tra memoria e dischi sono operati dal SW Nella cache, il trasferimento e effettuato dall HW La gerarchia di memoria che comprende MMU, memoria, and i dischi prende il nome di memoria virtuale Gerarchia della Memoria (cont.) La Protezione della Memoria: implementata controllando se gli indirizzi usati dal processo sono al di fuori della memoria ad esso allocata Registri di controllo usati: <base> e <size> (anche detto limit) Indirizzo del primo byte = <base> Indirizzo dell ultimo byte = <base> +<size> 1 15
Esempio: Protezione della Memoria interrupt Esecuzione dell istruzione Load causa una violazione Protezione della memoria mediante i registri base e size Ricapitolando Un interrupt e un segnale speciale inviato alla CPU per segnalare un evento significativo Trasferisce il controllo al SO Una system call e un interrupt SW Un programma la usa per richiedere l intervento del SO Registri di controllo regolano il funzionam. della CPU Program status word (PSW) SO kernel salva lo stato della CPU ad ogni interrupt PSW e GPRs CPU opera in 2 modalita determinate dal campo mode (M) della PSW User mode e kernel mode 16
ricapitolando La gerarchia di memoria fornisce a programmi una memoria veloce e capiente a basso costo Si compone di: Una memoria piccola ma molto veloce: cache memory Una memoria piu lenta ma piu ampia: RAM Memorie secondarie: dischi Tempo effettivo di accesso dipende dal cache hit ratio 17