Sei sulla pagina 1di 10

Interrupts and Exceptions

Da Understanding Linux Kernel Daniel P. Bovet, Marco Cesati Gli interrupts sono generati da timer e da periferiche sono asincroni Le exception sono sincrone Errori di programma Condizioni anomale Page fault System call (istruzioni int o sysenter)
Sistemi Operativi Interrupt. 1 Laface 2007

Meccanismo degli interrupt

Il meccanismo dei segnali di interrupt permette di spostare il flusso di controllo del processore ad un apposito pezzo di codice che svolge una nuova attivit. Realizzato salvando il valore attuale del program counter (PC) (cio il contenuto dei registri eip e cs) nello stack del kernel mode caricando nel PC un indirizzo che permette di eseguire il codice corrispondente allinterrupt

Sistemi Operativi

Interrupt. 2

Laface 2007

Vincoli
Un interrupt asincrono Gestione veloce Gestione in due fasi Urgente o critica Posponibile Gestione di interrupt annidati Gestione di regioni critiche con interrupt disabilitati

Sistemi Operativi

Interrupt. 3

Laface 2007

Interrupt masking
Un interrupt ignorato dalla CPU finch masked Alcuni interrupt che segnalano difetti hardware non sono mascherabili.

Sistemi Operativi

Interrupt. 4

Laface 2007

Exceptions
Divise in 3 gruppi in base al valore del registro eip che salvato nello stack quando la CPU genera uneccezione Faults La condizione di fault pu essere corretta e il processo ripartire dalla stessa istruzione Traps Utilizzate essenzialmente per il debug Abort La condizione di errore tale che non si sa quale valore memorizzare in eip
Sistemi Operativi Interrupt. 5 Laface 2007

Exceptions
Errors: divisions by zero illegal instruction memory parity error ... Protection violations memory violation
P3

ptraps.c

Sistemi Operativi

Interrupt. 6

Laface 2007

P3

int i, j; main(){ scanf("%d", &i); j=2; j = j /i; }


Laface; 16/02/2005

Programmed exceptions
Avvengono a causa dellesecuzione di una istruzione int o int3 into (check for overflow) bound (check on address bound) Gestite come le trap e chiamate software interrupt, servono per realizzare le system call segnalare eventi al debugger

Sistemi Operativi

Interrupt. 7

Laface 2007

Enable/Disable Interrupt
Ogni interrupt o exception identificata da un numero compreso tra 0 e 255 che Intel chiama vector Le istruzioni assembler disable interrupt cli enable interrupt sti operano sul bit IF del registro eflags che opera in AND con il masking

Sistemi Operativi

Interrupt. 8

Laface 2007

Segnali inviati dagli exception handlers


# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Sistemi Operativi Exception Divide error Debug NMI Breakpoint Overflow Bounds check Invalid opcode Device not available Double fault Coprocessor segment overrun Invalid TSS Segment not present Stack segment fault General protection Page Fault Intel-reserved Floating-point error Alignment check Machine check SIMD floating point Exception handler divide_error( ) debug( ) nmi( ) int3( ) overflow( ) bounds( ) invalid_op( ) device_not_available( ) doublefault_fn( ) coprocessor_segment _overrun( ) invalid_TSS( ) segment_not_present( ) stack_segment( ) general_protection( ) page_fault( ) None coprocessor_error( ) alignment_check( ) machine_check( ) simd_coprocessor _error( ) Signal SIGFPE SIGTRAP None SIGTRAP SIGSEGV SIGSEGV SIGILL None None SIGFPE SIGSEGV SIGBUS SIGBUS SIGSEGV SIGSEGV None SIGFPE SIGBUS None SIGFPE Laface 2007

Interrupt. 9

Instruction Cycle

Fetch operand(s)

Start

Fetch next instruction

Decode instruction

Execute instruction

Halt

Sistemi Operativi

Interrupt. 10

Laface 2007

Instruction Cycle with Interrupts


Fetch operand(s)

Start

Fetch next instruction

Decode instruction

Execute instruction

Halt

Interrupt disabled Check Interrupt Interrupt enabled

Se un interrupt pendente, sospende lesecuzione del programmma, ed esegue linterrupt handler

Sistemi Operativi

Interrupt. 11

Laface 2007

Interrupt Vector
116 int_h_10()

Memory

Address
6

Content
Interrupt Handler 116 PSW of int_h_10()

108 164 . . . 20000 main . 20064 20068 . iret

Interrupt vector

10 14 16

10

Program Status Word 32-64 bit flags


Stack

23000 . . . 52560 52564 52568

return


Laface 2007

Sistemi Operativi

Interrupt. 12

Interrupt Vector
Memory Address
6 10 Interrupt vector 14 16 116 Interrupt Handler 108 164 . . . 20000 main . 20064 iret int_h_10() 116 PSW of int_h_10()

Content

Linterrupt controllato alla fine dellesecuzione dellistruzione attuale (allindirizzo 20064)

10

20068 . 23000 . . . 52560 return

PC SP PSWR

20068 52568 main PSW

Stack

52564 52568

Sistemi Operativi

Interrupt. 13

Laface 2007

Interrupt Vector
Memory Address
6 10 Interrupt vector 14 16 116 Interrupt Handler 108 164 . . . 20000 main . 20064 iret int_h_10() 116 PSW of int_h_10()

Content

La CPU reagisce allinterrupt

10

20068 . 23000 . . . 52560 return

PC SP PSWR
main PSW 20068

116 52564 int_h_10 PSW

Stack

52564 52568

Sistemi Operativi

Interrupt. 14

Laface 2007

Interrupt Vector
Memory Address
6 10 Interrupt vector 14 16 116 Interrupt Handler 108 164 . . . 20000 main . 20064 iret int_h_10() 116 PSW of int_h_10()

Content

Prima di eseguire iret

10

20068 . 23000 . . . 52560 main PSW 20068 return

PC SP PSWR

168 52568 int_h_10 PSW

Stack

52564 52568

Sistemi Operativi

Interrupt. 15

Laface 2007

Interrupt Vector
Memory Address
6 10 Interrupt vector 14 16 116 Interrupt Handler 108 164 . . . 20000 main . 20064 iret int_h_10() 116 PSW of int_h_10()

Content

Dopo lesecuzione di iret

10

20068 . 23000 . . . 52560 main PSW --20068 -- return

PC SP PSWR

20068 52568 main PSW

Stack

52564 52568

Sistemi Operativi

Interrupt. 16

Laface 2007

Instruction cycle with exceptions


traps Fetch operand(s)

Start

Fetch next instruction

Decode instruction

Execute instruction

Halt

Interrupt disabled Check Interrupt Interrupt enabled

Sistemi Operativi

Interrupt. 17

Laface 2007

Gestione dellinterrupt
Disabilita gli interrupt mentre si elabora un interrupt La CPU ignora le nuove richieste finch abilita la ricezione di eventuali interrupt pendenti Interrupt di priorit pi elevata possono interrompere la routine di gestione di un interrupt di priorit pi bassa.

Sistemi Operativi

Interrupt. 18

Laface 2007