| Interrupts
and DMA
Interrupt :
An interrupt is a signal from
a device attached to a computer
or from a program within the computer
that causes the main program that
operates the computer (the operating
system) to stop and figure out
what to do next. Almost all personal
(or larger) computers today are
interrupt-driven - that is, they
start down the list of computer
instructions in one program (perhaps
an application such as a word
processor) and keep running the
instructions until either (A)
they can't go any further or (B)
an interrupt signal is sensed.
After the interrupt signal is
sensed, the computer either resumes
running the program it was running
or begins running another program.
Basically, a single computer can
perform only one computer instruction
at a time. But, because it can
be interrupted, it can take turns
in which programs or sets of instructions
that it performs. This is known
as multitasking. It allows the
user to do a number of different
things at the same time. The computer
simply takes turns managing the
programs that the user effectively
starts. Of course, the computer
operates at speeds that make it
seem as though all of the user's
tasks are being performed at the
same time. (The computer's operating
system is good at using little
pauses in operations and user
think time to work on other programs.)
An operating system usually has
some code that is called an interrupt
handler. The interrupt handler
prioritizes the interrupts and
saves them in a queue if more
than one is waiting to be handled.
The operating system has another
little program, sometimes called
a scheduler, that figures out
which program to give control
to next.
Interrupt request
The IRQ (interrupt request) value
is an assigned location where
the computer can expect a particular
device to interrupt it when the
device sends the computer signals
about its operation. For example,
when a printer has finished printing,
it sends an interrupt signal to
the computer. The signal momentarily
interrupts the computer so that
it can decide what processing
to do next. Since multiple signals
to the computer on the same interrupt
line might not be understood by
the computer, a unique value must
be specified for each device and
its path to the computer. Prior
to Plug-and Play (PnP) devices,
users often had to set IRQ (interrupt
request) values manually (or be
aware of them) when adding a new
device to a computer.
If you add a device that does
not support Pnp, the manufacturer
will hopefully provide explicit
directions on how to assign IRQ
values for it. If you don't know
what IRQ value to specify, you'll
probably save time by calling
the technical support phone number
for the device manufacturer and
asking.
A table of interrupt vectors
(Pointers** to routines** that
handle interrupts.)
On PCs, the interrupt vector table
consists of 256 4-byte pointers,
and resides in the first 1 K of
addressable memory. Each interrupt
number is reserved for a specific
purpose. For example, 16 of the
vectors are reserved for the 16
IRQ lines.
An interrupt vector table is
also called a dispatch table.
Direct Memory Access
Direct Memory Access (DMA) is
a capability provided by some
computer bus architectures that
allows data to be sent directly
from an attached device (such
as a disk drive) to the memory
on the computer's motherboard.
The microprocessor is freed from
involvement with the data transfer,
thus speeding up overall computer
operation.
Usually a specified portion of
memory is designated as an area
to be used for direct memory access.
In the ISA bus standard, up to
16 megabytes of memory can be
addressed for DMA. The EISA and
Micro Channel Architecture standards
allow access to the full range
of memory addresses (assuming
they're addressable with 32 bits).
Peripheral Component Interconnect
accomplishes DMA by using a bus
master (with the microprocessor
"delegating" I/O control
to the PCI controller).
An alternative to DMA is the
Programmed Input/Output (PIO)
interface in which all data transmitted
between devices goes through the
processor. A newer protocol for
the ATA/IDE interface is Ultra
DMA, which provides a burst data
transfer rate up to 33 MB (megabytes)
per second. Hard drives that come
with Ultra DMA/33 also support
PIO modes 1, 3, and 4, and multiword
DMA mode 2 (at 16.6 megabytes
per second).
--------------------------------------------------------------------------------
**Pointers : In programming,
a pointer is a special type of
variable that holds a memory address
(that is, it points to a memory
location).
**Routines : A section of a program
that performs a particular task.
Programs consist of modules, each
of which contains one or more
routines. The term routine is
synonymous with procedure, function,
and subroutine.
|