La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

23
La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt

Transcript of La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

Page 1: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

La gestione delle interruzioni

TE@C TEAM

Alessandro Memo - gestione degli interrupt

Page 2: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 2

Argomenti trattati

• Perchè gli interrupt?• Salvataggio e ripristino del contesto• La gestione degli interrupt nell’architettura

INTEL• La gestione degli interrupt nei PC• Realizzazione di una ISR• Gli interrupt software

Page 3: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 3

Perché gli interrupt ?

• L’inefficenza del polling–la gestione dell’I/O: polling, interrupt, DMA

• La metafora dell’interruzione: il bidello• I limiti dell’interrupt: il telefono• definizione:

l’interrupt è un segnale o un messaggio, generalmente di natura asincrona, che arriva alla CPU per avvisarla del verificarsi di un certo evento

Page 4: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 4

Salvataggio e ripristino del contesto

• Interrupt Service Routine

• la neutralità dell’ISR

• il contesto attuale– contesto minimo– contesto specifico– contesto invariante

Page 5: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 5

Gli interrupt nell’architettura INTEL1. classificazione

• Interrupt (interruzioni)

– interrupt hardware mascherabili (periferiche esterne)

– interrupt hardware non mascherabile– interrupt software (chiamate al S.O. e/o gestione delle risorse)

• Exception (eccezzioni)

– faults (anomalie rilevate prima dell’esecuzione di un’istruzione)

– traps (anomalie rilevate dopo l’esecuzione di un’istruzione)

– aborts (anomalie non riconducibili ad una specifica istruzione)

Page 6: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 6

Gli interrupt nell’architettura INTEL2. modalità operative

Appena la CPU termina un’istruzione:– verifica che l’istruzione precedente non abbia generato

un trap

– verifica che la prossima istruzione non generi un fault

– verifica se è arrivato un interrupt non mascherabile

– verifica se è arrivato un interrupt mascherabile ed IF=1

– se in modalità protetta, verifica che la prossima istruzione non determini un fault

Page 7: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 7

Gli interrupt nell’architettura INTEL3. riconoscimento degli interrupt

• interrupt hardware non mascherabile– tipo 2, per default

• interrupt hardware mascherabile– legge il tipo (00-FF) dal Data Bus

• interrupt software– il tipo è specificato nell’istruzione

• eccezioni– tipo attribuito per default in base all’eccezione

Page 8: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 8

Gli interrupt nell’architettura INTEL4. la tabella delle interruzioni

INT

03

tipo ?

00 1123:4567

01 130A:FF02

02 A001:345C

03 32B0:AA00

FF 3345:0100

04 2A07:010032B0 in CSAA00 in IP

memoria da 0000:0000

67 45 23 11 02 FF 0A 135C 34 01 A0 00 AA B0 3200 01 07 2A F3 FF 03 AA

Tabella dei vettoridelle interruzioni

Page 9: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 9

Gli interrupt nei PC1. generalità

Problematiche:• come si possono collegare tante periferiche su una

sola linea di interruzione INT (riconoscimento) ?• si può interrompere un interrupt (accodamento) ?• e se arrivano due interrupt contemporaneamente

(priorità) ?

Soluzione:il Programmable Interrupt Controller, 8259A

Page 10: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 10

Gli interrupt nei PC2. architettura interna

Nei PC ci sono due PIC in cascata

Vedere la sequenza grafica riassuntiva dei segnali di interrupt

Il PIC gestisce la priorità, memorizza ed accoda eventuali altri interrupt che arrivano, emette il tipo associato ad ogni linea, maschera le singole linee di ingresso IRQxx

Page 11: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 11

Realizzazione di una ISR1. scelta dell’interrupt da usare

• o interrupt hardware generato da periferiche personalizzate e collegabili a qualche IRQ libero

• o interrupt software, generalmente collegabile ad INT 08 (o più sicuro INT 1C), generato automaticamente 18,2 volte al secondo

Page 12: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 12

Realizzazione di una ISR2. corpo della routine

• Non utilizzare chiamate di sistema del DOS (perché non sono rientranti)

Page 13: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 13

Cifra DB ‘0’

;-------------------------------------- routine ISR

MOV AX,SEG_VIDEO ; corpo della ISR

MOV ES,AX

MOV ES:0080h,Cifra

INC Cifra

CMP Cifra,’9’+1

JNZ Esci

MOV Cifra,’0’

Esci: … … … … …

;--------------------------------------------------

Page 14: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 14

Realizzazione di una ISR3. accesso alle variabili

• In Assembler l’accesso alle variabili è regolato dal registro di segmento DS: è indispensabile inizializzarlo in precedenza

• In C/C++ le variabili devono essere rese static per non perderne i valori tra esecuzioni successive della stessa ISR, e devono essere globali per essere allocate in maniera statica

Page 15: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 15

Cifra DB ‘0’ ; variabile nel segmento dati

;-------------------------------------- routine ISR

PUSH CS ; inizializzazione DS (per file .COM)

POP DS

MOV AX,SEG_VIDEO ; corpo della ISR

MOV ES,AX

MOV ES:0080h,Cifra

INC Cifra

CMP Cifra,’9’+1

JNZ Esci

MOV Cifra,’0’

Esci: … … … … …

;--------------------------------------------------

Page 16: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 16

Realizzazione di una ISR4. gestione contesto specifico

Page 17: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 17

Cifra DB ‘0’ ; variabile nel segmento dati

;-------------------------------------- routine ISR

PUSH AX ; salvataggio contesto specifico

PUSH ES

PUSH DS

PUSH CS ; inizializzazione DS (per file .COM)

POP DS

MOV AX,SEG_VIDEO ; corpo della ISR

MOV ES,AX

MOV ES:0080h,Cifra

INC Cifra

CMP Cifra,’9’+1

JNZ Esci

MOV Cifra,’0’

Esci: … … … … …

;--------------------------------------------------

Page 18: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 18

Realizzazione di una ISR5. allocare la ISR

• Terminate and Stay Resident (TSR)

Page 19: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 19

DOSSEG

.MODEL tiny ; modalita` .COM

.CODE

org 0100h ; locazione iniziale standard

Start: JMP Inizio ; salto la routine ISR

; ............. area dati ..........

TSR EQU 31h ; funzione TSR del DOS

DOS EQU 21h ; codice interrupt DOS

; ...

MioInt: ; ........ area contenente la ISR .....

; ...

Inizio: MOV AH,TSR ; funzione TSR

MOV DX, ((Inizio-Start)/16)+11h

INT DOS

END Start

Page 20: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 20

Realizzazione di una ISR6. aggiornamento tabella dei vettori

• Impedire che durante l’aggiornamento arrivino richieste di quel tipo di interrupt– o bloccando tutti gli interrupt (CLI ed STI)– o bloccando solo quello interessato (funzione

del DOS)

Page 21: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 21

DOSSEG .MODEL tiny ; modalita` .COM .CODE org 0100h ; locazione iniziale standardStart: JMP Inizio ; salto la routine ISR ; ............. area dati ..........TSR EQU 31h ; funzione TSR del DOSDOS EQU 21h ; codice interrupt DOSMioInt: ; ........ area contenente la ISR .....Inizio: MOV AH,SETVECT ; funzione Set Vector MOV AL,1Ch ; tipo di interrupt MOV DX,Offset MioInt ; salvo l'offset ; il segmento non serve perchè ; CS e DS si equivalgono nei file .COM INT DOS ; aggiorna la tabella MOV AH,TSR ; funzione TSR MOV DX, ((Inizio-Start)/16)+11h INT DOS ; ..

Inizio: MOV AH,TSR ; funzione TSR MOV DX, ((Inizio-Start)/16)+11h INT DOS END Start

Page 22: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 22

Realizzazione di una ISR7. il problema della rientranza

• Se una ISR è in grado di funzionare correttamente anche se viene chiamata ricorsivamente un numero finito di volte, allora si dice rientrante

• occorre isolare ed escludere mutualmente l’accesso a zone critiche dove si accede a risorse unarie

Page 23: La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.

TE@CH TEAM La gestione degli interrupt 23

Gli interrupt software

• Hanno permesso la portabilità del software su macchine compatibili ma fisicamente diverse

• Implementano le chiamate esterne al Sistema Operativo (DOS, API, etc…)