Gli interrupt Quando una periferica richiede attenzione alla cpu genera un segnale detto di interrupt Segnali di interrupt • Gli interrupt sono segnali che vengono inviati alla cpu per comunicare eventi ben precisi • A seconda dell’interrupt la cpu deve: 1. Sospendere l’esecuzione del programma 2. Attivare una routine specifica • Un interrupt è un segnale hardware (elettrico) inviato dai vari dispositivi alla cpu • Quando un processo vuole una operazione di i/o genera invece una interrupt software detta SVC (supervisor call) Interrupt handler • È quel «reparto» del sistema operativo che gestisce le interruzioni • Possiede una serie di sottoprocedure che servono a: • Accantonare il programma interrotto • Accogliere il nuovo programma • Esistono S.O. con più «interrupt handler», ciascuno per ogni dispositivo hardware che chiede l’interruzione ma nella maggior parte dei S.O. IH è unico. Algoritmo della cpu • La cpu esegue questo algoritmo ciclico in cui l’istruzione viene prelevata (fetch) interpretata (decode) ed eseguita (execute) in ciclo: begin Begin repeat fetch decode execute until fine end Fetch Decode Execute fine end Algoritmo della cpu con gestione interruzioni Begin repeat if not interrupt then begin fetch decode execute end else routine interrupt until fine end begin V Not interrupt Fetch Decode Execute F Routine interrupt fine end Registro di stato • Ogni programma in esecuzione viene dotato di un REGISTRO DI STATO di questo tipo: Stato del programma Programm counter lunghezza • Stato: informazioni sullo stato di esecuzione del programma • Programm counter: indirizzo della prossima istruzione da eseguire • Lunghezza: lunghezza istruzione eseguita Registro di stato • Per eseguire l’interruzione il SO deve: 1. Aggiornare e salvare il registro di stato inserendo l’informazione «programma interrotto», indirizzo della prossima istruzione da eseguire 2. Eseguire la routine di gestione delle interruzioni 3. Al termine ritornare all’esecuzione del programma sospeso • Quando avviene l’interruzione il registro di stato del programma interrotto viene salvato • In memoria centrale viene portato il registro di stato del programma da eseguire. • Quando finisce la procedura subentrata, viene salvato il suo registro di stato e riportato in memoria il registro del programma «sospeso» Switching tra 2 registri di stato • Fase 1: salvataggio in memoria centrale del registro di stato 1 del programma 1 sospeso • Fase 2: prelievo di un altro registro di stato 2 del programma 2 da eseguire • Fase 3: ripristino del registro di stato 1 per continuare l’esecuzione del programma 1. Tipi di interruzioni • Ce ne sono 5 principali: 1. 2. 3. 4. 5. Hardware interrupt: causata da malfunzionamento o guasto Supervisor call interrupt: richiesta di i/o Programm interrupt : istruzione errata, overflow, memory violation External interrupt: fine time slice, CTRL/ALT/CANC i/o interrupt: errore di comando, canale non connesso, dispositivo offline. Interrupt multipli • Cosa succede se, mentre la cpu sta eseguendo una routine di interrupt, gli viene chiesta un’altra interruzione? Si usano 2 tecniche • Interruzioni vettorizzate: si associa una priorità ad ogni interrupt, se la richiesta ha priorità più alta, viene servita la nuova e accantonata quella in esecuzione. • Ciclo di polling: se 2 o più periferiche fanno richiesta di interruzione ogni richiesta viene memorizzata in un flag associato alla periferica. La cpu fa la scansione ciclica di tutti i flag di ogni periferica e sceglie quella da servire.