In computer systems programming, an interrupt handler, also known as an interrupt service routine (ISR), is a special block of code associated with a specific interrupt condition. Interrupt handlers are initiated by hardware interrupts, software interrupt instructions, or software exceptions, and are used for implementing device drivers or transitions between protected modes of operation, such as system calls.
The traditional form of interrupt handler is the hardware interrupt handler. Hardware interrupts arise from an electrical trigger. The specifics of how an interrupt are handled is dependent on the hardware, but generally the CPU pauses execution of its current task, saves current program counter (and often flags) to the stack, and updates its program counter to the address of the routine that is responsible for servicing the interrupt. The interrupt service routine must then save any registers it may change. In general, hardware interrupts and their handlers are used to handle high-priority conditions that require the interruption of the current code the processor is executing.
It is convenient for software to be able to trigger the same mechanism: a software interrupt. Rather than using a hard-coded interrupt dispatch table at the hardware level, software interrupts are often implemented at the operating system level as a form of callback function.
Interrupt handlers have a multitude of functions, which vary based on what triggered the interrupt and the speed at which the interrupt handler completes its task. For example, pressing a key on a computer keyboard,
