Sunteți pe pagina 1din 11

5.

NTRERUPERI I EXCEPII
5.1. Definiii
Variant de transfer al controlului
Procedura general de rspuns la o cerere de ntrerupere:
1.

se salveaz n stiv locaia curent a programului adresa virtual (CS) (EIP)

2.

se salveaz n stiv registrul de fanioane (EF)

3.

[ se reseteaz fanionul IF ]

4.

se salveaz n stiv codurile de eroare

5.

se transfer controlul la rutina de deservire a ntreruperii (Interrupt Handler) prin


mecanismul adresrii indirecte, folosind o tabel cu descriptori de ntrerupere

Microcontrolere - Capitolul 5
Corneliu BURILEANU

Observaii:

- La Intel, pentru compatibilitate cu modul real, exist 256 de tipuri de ntreruperi


i deci 256 de posibile rutine de deservire a ntreruperilor
- O parte dintre tipurile de ntreruperi sunt rezervate

Variante de ntreruperi:
ntreruperi propriu-zise (hard): - nemascabile
- mascabile

Excepii:

- capcane - trap (ntreruperi soft)


- greeli faults
- greeli fatale aborts

Microcontrolere - Capitolul 5
Corneliu BURILEANU

Detaliere pentru IA16 i IA32


1.

ntreruperile hard nemascabile:


- terminal dedicat (NMI)
- se asociaz cu TIP 2

2.

ntreruperile hard mascabile:


- terminal dedicat (INTR)
- condiia ca (IF)=1
- se utilizeaz numai tipurile 32 255

3.

Capcane:
- toate ntreruperile soft sunt considerate capcane
- se genereaz la apariia erorilor dup efectuarea unei instruciuni
- exemplu: INTO
- la revenirea din rutina de deservire a ntreruperii se trece la instruciunea imediat urmtoare
celei care a generat ntreruperea soft
- se aplic mecanismul privilegiilor multi-nivel pentru protecie

Microcontrolere - Capitolul 5
Corneliu BURILEANU

4.

Greeli:
- se genereaz la apariia erorilor n timpul efecturii unei instruciuni
- exemplu: ncercarea de acces ntr-o pagin non-prezent
- se refer la erori corectabile: revenirea din rutina de deservire a ntreruperii se face chiar la
instruciunea care a generat ntreruperea astfel nct sistemul de operare, dup ce a corectat
eroarea, permite reluarea instruciunii curente
- se aloc un tip specific fiecrei ntreruperi tip greeal

5.

Greeli fatale:
- se genereaz la apariia erorilor n timpul efecturii unei instruciuni
- eroarea este att de sever nct revenirea la execuia instruciunii curente nu mai este posibil
- funcionarea procesorului se oprete (halt, shut-down etc.)

Microcontrolere - Capitolul 5
Corneliu BURILEANU

5.2. ntreruperi n modul virtual

Rutinele de deservire a ntreruperilor sunt n segmente din memoria virtual


Se aplic mecanismele de protecie
Tabela cu vectori de ntrerupere Tabel cu descriptori de ntrerupere (IDT)
Exist o singur IDT aa cum exist o singur GDT
Ca i pentru GDT, exist (la Intel) un registru dedicat pentru localizarea tabelei:
(IDTR) = BAZA_IDT LIMITA_IDT
IDT conine:
1.
2.
3.

pori de proces
pori pentru ntreruperi
pori pentru capcane

Microcontrolere - Capitolul 5
Corneliu BURILEANU

5.3. Pori pentru ntreruperi


Sunt descriptori de tip b3 asemntoare porilor de apelare

tip

0110

Poart de ntrerupere pentru 286

tip

1110

Poart de ntrerupere pentru 386/486/Pentium

tip

0111

Poart de trap pentru 286

tip

1111

Poart de trap pentru 386/486/Pentium


Microcontrolere - Capitolul 5
Corneliu BURILEANU

Modul de apelare a rutinelor pentru deservirea ntreruperilor:

1.

ntreruperile propriu-zise sunt vectorizate ctre pori de proces din IDT

2.

Excepiile utilizeaz n mod normal pori pentru capcane:


- poarta conine adresa virtual a rutinei de deservire a ntreruperii (indiferent de adresa virtual
asociat instruciunii)
- procedura de rspuns las nemodificat fanionul IF

3.

Excepiile pot utiliza pori pentru ntreruperi numai pentru compatibilitate cu modul real:
- poarta conine adresa virtual a rutinei de deservire a ntreruperii
- procedura de rspuns reseteaz fanionul IF exact ca n modul real

Accesul la o poart e posibil numai dac Regula 1 a privilegiilor multi-nivel este respectat

Microcontrolere - Capitolul 5
Corneliu BURILEANU

Se folosesc coduri de eroare informaii adiionale trimise n stiv nainte de transferarea controlului
la rutina de deservire a ntreruperii

Coduri de eroare

- INDEX i TI sunt luate din selectorul asociat segmentului n care a aprut excepia
- I = 1 indic faptul c INDEX se refer la IDT i nu direct la GDT sau la o LDT
- EXT = 1 indic faptul c instruciunea curent nu e responsabil pentru generarea excepiei
(de exemplu, referina la un segment non-prezent)

Microcontrolere - Capitolul 5
Corneliu BURILEANU

5.4. Exemple de folosire a ntreruperilor n modul virtual IA16 / IA32


TIP

Varianta
de
ntrerupere

Semnificaie

Adresa de revenire

Restartabil

Cod
eroare

greeal

mprire la 0

Primul octet al instruciunii curente

DA

NU

greeal/capcan

Funcionare pas cu pas

Instruciunea urmtoare

NU

NU

ntrerupere hard

ntrerupere nemascabil

DA

NU

capcan

Breakpoint

Instruciunea urmtoare

DA

NU

capcan

INTO

Instruciunea urmtoare

DA

NU

greeal

Depire limit tablou de date

Primul octet al instruciunii curente

DA

NU

greeal

Cod instruciune non-valid

Primul octet al instruciunii curente

DA

NU

greeal

Coprocesor non-disponibil

Primul octet al instruciunii curente

DA

NU

greeal fatal

Dubl greeal

Primul octet al instruciunii curente

NU

DA

greeal fatal

Eroare coprocesor

Impredictibil

NU

NU

10

greeal

TSS non-valid

Primul octet al instruciunii curente

DA

DA

11

greeal

P = 0 segment non-prezent

Primul octet al instruciunii curente

DA

DA

12

greeal

Eroare legat de stiv

Primul octet al instruciunii curente

NU

DA

13

greeal

Violare de protecie

Primul octet al instruciunii curente

NU

DA

14

greeal

Eroare de paginare

Primul octet al instruciunii curente

DA

NU

15

rezervat

16

greeal

Eroare coprocesor

Urmtorul ESC sau WAIT

NU

NU

17

greeal

Eroare de aliniere a datelor

Primul octet al instruciunii curente

DA

NU

18-31
32-255

rezervate
pentru utilizator

Microcontrolere - Capitolul 5
Corneliu BURILEANU

Restartabil: dup nlturarea cauzei erorii, programul continu prin re-executarea instruciunii

- Exemplu tipic: tipul 0


- Contra-exemplu: ADC care vizeaz s nscrie rezultatul ntr-un segment RO
- Cazul segmentelor non-prezente: tipul 11

Eroare legat de stiv:


- segment de stiv non-prezent
- depirea limitei segmentului de stiv; ar putea fi reluat programul cu excepia cazurilor
cnd se transfer mai muli octei n/din stiv: PUSHA i POPA

Microcontrolere - Capitolul 5
Corneliu BURILEANU

10

Depanarea
1.

Fanionul capcan TF din registrul de fanioane


- genereaz ntrerupere de tip 1
- se invoc o rutin ce permite funcionarea pas cu pas
- folosirea porii de apelare nu permite trecerea pas cu pas la programe mai privilegiate

2.

Bitul capcan pentru schimbarea procesului T din TSS


- cnd T=1, schimbarea procesului invoc INT 1
- ntreruperea apare dup ncrcarea noului TSS i execuia primei instruciuni din noul proces

3.

Registre breakpoint: la Intel DR0 DR7


- conin adrese la care execuia programului poate fi oprit
- oprirea execuiei se face tot cu INT 1

4.

Folosirea instruciunii INT 3


- format pe un octet
- pentru repornire, octetul de cod se nlocuiete cu cel al instruciunii originale, iar EIP
se decrementeaz
Microcontrolere - Capitolul 5
Corneliu BURILEANU

11