Rescheduling: hardware interrupts
Rescheduling due to a hardware interrupt occurs in two cases.
- timers
- other hardware
The realtime clock generates periodic interrupts for the kernel, causing time-based rescheduling.
For example, if you issue a sleep (10);
call, a number of
realtime clock interrupts will occur; the kernel increments the time-of-day
clock at each interrupt.
When the time-of-day clock indicates that 10 seconds have elapsed, the
kernel reschedules your thread as READY.
(This is discussed in more detail in the Clocks, Timers, and Getting a Kick
Every So Often chapter.)
Other threads might wait for hardware interrupts from peripherals,
such as the serial port, a hard disk, or an audio card.
In this case, they are blocked in the kernel waiting for a
hardware interrupt; the thread will be rescheduled by the kernel
only after that event
is generated.