Interrupt handler

From Free net encyclopedia

An interrupt handler, also known as an interrupt service routine, is a subroutine in an operating system or device driver whose execution is triggered by the reception of an interrupt. Interrupt handlers have a multitude of functions, which vary based on the reason the interrupt was generated and the speed at which the Interrupt Handler completes its task.

An interrupt handler is a specific application of event handlers within an operating system. These handlers are initiated by either hardware interrupts or interrupt instructions in software, and are used for servicing hardware devices and transitions between protected modes of operation such as system calls.

Overview

In modern systems interrupt handlers are split into two parts: the First-Level Interrupt Handler (FLIH) and the Second-Level Interrupt Handlers (SLIH). FLIHs are also known as hard interrupt handlers and fast interrupt handlers, and SLIHs are also known as interrupt threads and slow interrupt handlers.

A FLIH implements at minimum platform specific interrupt handling similarly to interrupt routines. In response to an interrupt, there is a context switch, and the code for the interrupt is loaded and executed. The job of a FLIH to quickly service the interrupt, or to record platform specific critical information which is only available at the time of the interrupt, and schedule the execution of a SLIH for further long-lived interrupt handling.

FLIHs have a short execution time which lowers the jitter in process execution and lowers the potential for loss of information from masked interrupts. Reducing the jitter is most important for real time operating systems, since they must maintain a guarantee that execution of specific code will complete within an agreed amount of time. With the speed of modern computers, FLIHs may implement all device and platform dependent handling, and use a SLIH for further platform independent long-lived handling.

FLIHs which service hardware typically mask their associated interrupt (or keep it masked as the case may be) until they complete their execution. Otherwise, these interrupt handlers might cause a stack overflow from multiple preemptions by the same interrupt vector. In a priority interrupt system, the FLIH also (briefly) masks other interrupts of equal or lessor priority.

A SLIH completes long interrupt processing tasks similarly to a process. SLIHs either have a dedicated kernel thread for each handler, or are executed by a pool of kernel worker threads. These threads sit on a run queue in the operating system until processor time is available for them to perform processing for the interrupt. SLIHs may have a long-lived execution time, and thus are typically scheduled similarly to threads and processes.

It is worth noting that in many systems the FLIH and SLIH are referred to as upper halves and lower halves, hardware and software interrupts, or a derivation of those names.

See also

fr:Routine de gestion d'interruption it:Gestore di interrupt he:שגרת טיפול בפסיקה