Chapter 16. Advanced IRQ Management
On a Linux system, devices notify the kernel about particular events by means of IRQs. The CPU exposes shared or unshared IRQ lines that are used by connected devices, so that when a device needs the CPU, it sends a request to it. When the CPU gets this request, it stops its actual job and saves its context, in order to serve the request issued by the device. After serving the device, the CPU's state is restored back to exactly where it stopped when the interruption occurred. There are so many IRQ lines that another device is responsible for them to the CPU. That device is the interrupt controller, illustrated as follows:

Interrupt controller and IRQ lines
Not only devices can raise interrupts; some processor operations can do it too. There are two different kinds of interrupts:
- Synchronous interrupts, called exceptions, are produced by the CPU while processing instructions. These are non-maskable interrupts (NMI), and they result from a critical malfunction...