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.
Scarica

Gli interrupt