For I/O operation, say an output operation, like printing some information
by a printer. Printer is much slower device than the CPU. The CPU puts
some information on the output buffer. While printer is busy printing these
information from output buffer, CPU is lying idle. During this time
CPU can perform some other task which does not involve the memory bus.
When the external device becomes ready to be serviced, that is, when it is
ready to accept more data from the processor, the I/O module for that
external device sends an interrupt request signal to the processor.
The processor responds by suspending operation of the current program,
branching off to a program to service the particular I/O device (known
as an interrupt handler), and resuming the original execution after the
device is serviced.
From the point of view of the user program, an interrupt is just that :
an interruption of the normal sequence of execution. When the interrupt
processing is completed, execution resumes.
To accommodate interrupts, an interrupt cycle is added to the instruction
cycle, which is shown in the Figure 5.5. In the interrupt cycle, the processor
checks if any interrupt have occurred, indicated by the presence of an
interrupt signals. If no interrupts are pending, the processor proceeds to
the fetch cycle and fetches the next instruction of the current program.
If an interrupt is pending, the processor does the following:
-
It suspends the execution of the current program being executed and saves
its contents. This means saving the address of the next instruction to be
executed (current contents of the program counter) and any other data
relevant to the processor's current activity.
- It sets the program counter to the starting address of an interrupt
handler routine.
|