First, we need the ability to defer interrupt handling during critical
processing. Second, we need an efficient way to dispatch to the proper
interrupt handler for a device, without first polling all the devices to see
which one raised the interrupt. Third, we need multilevel interrupts, so that
the operating system can distinguish between high- and low-priority
interrupts, and can respond with the appropriate degree of urgency..