|
Physical Location of
Memory Contents (Data and/or Instructions)
Some device drivers and
BIOS are labeled 16-bit and some are labeled 32-bit. Using Windows 9x and
DOS, all 16-bit programs including device drivers and BIOS must be
assigned memory addresses in the first 1024K of addresses. Faster 32-bit
programs can be assigned addresses in extended memory. DOS cannot support
32-bit programs without the help of Windows 3.x, so a pure DOS-based
system can only use 16-bit programs. One goal of Windows 9x is to replace
all older 16-bit device drivers with newer 32-bit versions. Also, newer
devices contain BIOS that is written using 32-bit code rather than 16-bit
code. Therefore, in a Windows 9x environment, most of the memory addresses
below 1024K are not used. Windows NT and Windows 2000 use an altogether
different memory mapping design where there is no conventional, upper, or
extended memory—it’s all just memory. With this new approach to memory
management, BIOS and device drivers have no say as to what memory
addresses they are assigned.
Using The I/O
Address Table
Memory addresses that
are assigned to device drivers and System BIOS programs are stored in the
I/O address table. This table is
located at the very bottom of the memory addresses (low numbers), referred
to as I/O addresses. A block of memory locations near the bottom of memory
is the region of memory where the beginning addresses of the device
drivers and BIOS programs are stored.
For example, when the
IRQ for the mouse signals the CPU for service, the CPU looks in the I/O
address table for the addresses in either conventional memory or upper
memory where the device driver or System BIOS program that services the
mouse is located.
Device drivers must
first be copied to RAM because they are stored on the hard drive and
cannot be executed from there. Device driver files are copied to RAM and
assigned memory addresses during the booting process. These driver files
may be loaded into conventional memory or upper memory. Both System BIOS
and device drivers require two different entries in memory as follows and
as shown in the figure below:
An entry in the I/O
address table, which correlates device drivers and System BIOS programs
with their starting addresses in memory.
A block of memory
addresses that contains the driver or BIOS program.
<Previous>
<Home>
<Next>
|