software A routine which is executed when an
interrupt occurs. Interrupt handlers typically deal with low-level
events in the hardware of a computer system such as a
interrupt handler to ensure that either the interrupt which
triggered the handler's execution is masked out (inhibitted)
until the handler exits, or the handler is
re-entrant so
that multiple concurrent invocations will not interfere with
each other.
If interrupts are masked then the handler must execute as
quickly as possible so that important events are not missed.
This is often arranged by splitting the processing associated
with the event into "upper" and "lower" halves. The lower
part is the interrupt handler which masks out further
interrupts as required, checks that the appropriate event has
occurred (this may be necessary if several events share the
same interrupt), services the interrupt, e.g. by reading a
character from a
UART and writing it to a
queue, and
re-enabling interrupts.
The upper half executes as part of a user process. It waits
until the interrupt handler has run. Normally the
operatingsystem is responsible for reactivating a process which is
waiting for some low-level event. It detects this by a shared
flag or by inspecting a shared queue or by some other
synchronisation mechanism. It is important that the upper and
lower halves do not interfere if an interrupt occurs during
the execution of upper half code. This is usually ensured by
as removing a character from a queue.
(2002-07-24)