Interrupts and Exceptions (Linux)

 An interrupt is usually defined as an event that alters the sequence of instructions

executed by a processor. Such events correspond to electrical signals generated by

hardware circuits both inside and outside the CPU chip.






Interrupts are often divided into synchronous and asynchronous interrupts:






• Synchronous interrupts are produced by the CPU control unit while executing

instructions and are called synchronous because the control unit issues them

only after terminating the execution of an instruction.






• Asynchronous interrupts are generated by other hardware devices at arbitrary

times with respect to the CPU clock signals.






Intel microprocessor manuals designate synchronous and asynchronous interrupts as

exceptions and interrupts, respectively. We’ll adopt this classification, although we’ll

occasionally use the term “interrupt signal” to designate both types together (syn-

chronous as well as asynchronous).






Interrupts are issued by interval timers and I/O devices; for instance, the arrival of a

keystroke from a user sets off an interrupt.






Exceptions, on the other hand, are caused either by programming errors or by anom-

alous conditions that must be handled by the kernel. In the first case, the kernel han-

dles the exception by delivering to the current process one of the signals familiar to

every Unix programmer. In the second case, the kernel performs all the steps needed

to recover from the anomalous condition, such as a Page Fault or a request—via an

assembly language instruction such as int or sysenter—for a kernel service.

We start by describing in the next section the motivation for introducing such sig-

nals. We then show how the well-known IRQs (Interrupt ReQuests) issued by I/O

devices give rise to interrupts, and we detail how 80×86 processors handle inter-

rupts and exceptions at the hardware level. Then we illustrate, in the section “Initial-

izing the Interrupt Descriptor Table,” how Linux initializes all the data structures

Popular Posts