In a PC, the CPU is the active component, controlling all other
parts.
The CPU is communicating with all other devices, like: keyboard,
mouse, Modem, printer,....
It is the responsibility of the CPU to process in
time any request coming via one of the devices from the user, for example: the
user moved the mouse, now the position of the mouse-cursor needs to be updated
on the screen.
There are 2 methods to organize this, which I have
visualized in 2 (fairly large) animation's:
1) Polling:
The CPU stops in
regular interval to process the user-program to check now with EVERY connected
device, if an action of the CPU is required.
This is a very ineffective
method, since this checking takes up substantial processing
time.
2)
Interrupts
Much more efficient is the
method to assign to each device a "ringer".
This allows the CPU to
continuously process the User-Program. If a device needs now to be handles, it
uses the "ringer" to send an alarm system to the CPU. The CPU
interrupts now its current activity and handles the request of the
interrupting device.
This is the theory, lets look at the actual
implementation on a PC.
And here we are today still suffering from the first
design of the IBM PC:
![]() |
On the IBM PC (based on the 8088 CPU), IBM used the "8259 Interrupt Controller", allowing 8 interrupt-signals (numbered 0 to 7) to be generated. |
Since some of these 8 Interrupts were already used by the
internal devices of the PC, IBM improved (a little) the design by adding on the
IBM AT a SECOND
Interrupt-controller:
![]() |
The design of the IBM AT includes 2 Interrupt-controller, where the 2nd controller is "cascaded" into the Interrupt-line 2 of the first controller. The Interrupt-lines on the second controller are numbered from 8 to 15. Due to this "cascading", the Interrupt-line 2 is NOT available. However: for compatibility with the original PC, the Interrupt-line 2 is connected to the Line 9 on the 2nd controller. (So, if a device on your PC is configured for Interrupt 2, it really uses Interrupt 9). |
These Interrupt lines are called: "Interrupt Request Lines"
or IRQ's.
On Windows95, you can view the the list of IRQ assignment in
the System-Applet of the
Control-Panel, tab:
Device-Manager by double-clicking on
"Computer":
Now the bad news:
A
lot of these IRQ-lines are already in use:
IRQ: | Used by: | Comment: |
0 | System-Timer | Not Available |
1 | Keyboard | Not Available |
2 | cascade to 2nd Controller | Not Available |
3 | Serial port: COM2 | if COM2 is installed: Not available if COM2 is NOT installed: available |
4 | Serial port: COM1 | since COM1 is installed and used on Most systems: Not available |
5 | free | was reserved by IBM for Parallel-Port LPT2, but since few few people have LPT2: available Warning: The sound-card may already use it |
6 | Floppy disk controller | Not Available |
7 | LPT1 | Printer-port 1, which is used on almost every system on Windows95: Not available on Windows NT4: available |
8 | Real Time Clock | Not Available |
9 | free | available |
10 | free | available Warning: The sound-card may already use it |
11 | free | |
12 | PS-2 Mouse-Port | if you have a PS-2 mouse-port and use it:Not
Available If you do NOT have it or have deactivated it:available |
13 | FPU Math-Coprocessor | Not Available |
14 | primary harddisk IDE controller |
Not Available (unless you have ONLY SCSI-disks and CD-ROMS) |
15 | secondary harddisk IDE controller |
usually, a ATAPI-CD-ROM is connected on this Secondary IDE-harddisk controller:Not Available (do NOT connected your Harddisk and CD-ROM on the same IDE-disk controller, it will dramatically slow down your harddisk performance !) |
Network-Boards (NIC's) are very often configured for IRQ: 5
or 10
(watch it: your sound-card may use it
already !)
In general, each device needs its own IRQ-line NOT SHARED with any other device ! |
Exception 1) very often, COM3 is using
IRQ4 (same as COM1) and COM4 is
using IRQ3 (same as COM2). That is accepted
by Windows95 and works, as
long as these ports sharing the IRQ-line are NOT
used simultaneous !
Exception 2)
If the driver supplied with the card supports it, modern
PCI-devices
are able to share an IRQ, if supported by
the Operating system (like: Windows98)