La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.
-
Upload
marcella-beretta -
Category
Documents
-
view
217 -
download
0
Transcript of La gestione delle interruzioni TE@C TEAM Alessandro Memo - gestione degli interrupt.
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
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
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
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)
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
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
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
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
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
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
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)
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: … … … … …
;--------------------------------------------------
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
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: … … … … …
;--------------------------------------------------
TE@CH TEAM La gestione degli interrupt 16
Realizzazione di una ISR4. gestione contesto specifico
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: … … … … …
;--------------------------------------------------
TE@CH TEAM La gestione degli interrupt 18
Realizzazione di una ISR5. allocare la ISR
• Terminate and Stay Resident (TSR)
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
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)
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
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
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…)