[ The PC Guide | Systems and Components Reference Guide | System Memory | Logical Memory Layout ]
Memory Layout Overview
The system memory in the PC, despite the fact that it is often referred to as a single
number ("my PC has 32 MB of memory") is in fact broken into several different
areas. Even though every PC user today probably wishes it wasn't this way. :^) This design
is the legacy of system limitations built into the earliest versions of the IBM PC and the
versions of DOS that ran on them.
While it's easy--and fun! :^)--to damn those responsible for the PC's current warped
way of organizing its memory, it's more realistic to remember the circumstances that led
to this happening. In 1981, when the IBM PC was first released, 1 MB was a lot of
memory. The most popular home computers at that time were probably the Apple ][ and the
Commodore 64, both of which didn't go above 64 KB of memory. I remember at the time using
a large minicomputer at school that had just 8 KB of memory! Memory was also
very expensive. In short, the computer world was just a totally different animal then from
what it is now. And hindsight, as they say, is 20-20.
As a result of the design decisions made in the earliest PCs, memory is broken into the
following four basic pieces (with some of the pieces being divided further):
- Conventional Memory: The first 640 KB of system memory is the (in)famous
conventional memory that every PC user has over time grown to know and hate. This is the
area that is available for use by standard DOS programs, along with many drivers,
memory-resident programs, and most anything else that has to run under standard DOS. It is
found at addresses 00000h to 9FFFFh.
- Upper Memory Area (UMA): This is the upper 384 KB of the first megabyte of system
memory (immediately above conventional memory). It is reserved for use by system devices
and for special uses such as ROM shadowing and drivers. It uses addresses A0000h to
FFFFFh.
- High Memory Area (HMA): This is the first 64 KB (less 16 bytes) of the second
megabyte of system memory. Technically this is the first 64 KB of extended memory, but it
can be accessed when the processor is in real mode, which makes it different from the rest
of extended memory. It is usually used for DOS, to allow more conventional memory to be
preserved. It occupies addresses 100000h to 10FFEFh.
- Extended Memory: This is all the memory above the high memory area until the end
of system memory. It is used for programs and data when using an operating system running
in protected mode, such as any version of Windows. Extended memory is found from address
10FFF0h to the last address of system memory. (Technically, the high memory area is part
of extended memory, it all depends on how you are looking at things).
Next: Conventional Memory
Home - Search
- Topics - Up
|