Conventional
memory is the first 640 kilobytes of an
IBM PC's
memory. Prior to extended memory specifications such as Expanded Memory Specification (EMS), Extended Memory Specification (XMS),
and High Memory Area (HMA), real mode
applications could use only this part of the memory. Even when extended memory
is present, real-mode applications have to be specially programmed to use it
using a complex system of overlays; consequently, many applications continued
to use only conventional memory.
History
As DOS
applications grew larger and more complex in the late 1980s, it became
common practice to free up as much conventional memory as possible by moving
device drivers and Terminate and Stay Resident programs
(TSRs) into Upper Memory Blocks (UMBs).
For
older real mode operating systems (OSes) such as MS-DOS, it was
often worthwhile to tune the system to load drivers and other system components
into UMBs (chunks of extended memory remapped into the Upper
Memory Area (UMA)) in order to leave as much conventional memory as
possible free for running large applications.
With
modern operating systems and 32-bit machines the
distinction between conventional and extended memory is rarely relevant, since
all memory can be accessed uniformly in protected
mode.
640 KB barrier
The 640
KB barrier is an aspect of the IBM PC and compatibles when running under
MS-DOS which could only address up to 640 KB of memory for running
applications. This is due to limitations of the original IBM PC, which used the
Intel 8088
CPU.
The
term refers to the size of the PC's conventional memory. The 8088 and 8086 were
only capable of addressing 1 MB of memory, of which IBM reserved the upper 384
KB for system purposes — the Upper
Memory Area. This left only the lower 640 KB for user programs and data. At
the time of the PC's release in 1981, 640 KB would have seemed more than plenty for the typical
user. Keep in mind that the most popular home computer of that era, the Commodore
64, had only 64 KB, of which only 38 KB were available to the user.
To
maintain compatibility with older OSes, the 640 KB barrier remained part of the
PC design even after the 8088 had been replaced with the Intel 286
processor, which could address up to 16 MB of memory. It is still present in
IBM PC compatibles today if they are running MS-DOS.
Overcoming the barrier
The
barrier was only overcome with the arrival of DOS
extenders, which allowed DOS applications to run in Extended
Memory, but these were not very widely used. The first PC operating
systems to integrate such technology were Compaq DOS 3.31 (via CEMM) and Windows/386
2.1, both released in 1988. Windows applications did not suffer from the 640 KB
barrier. Prior
to DOS extenders, if a user installed additional memory and wished to use it
under DOS, they would first have to install and configure drivers to support
either Expanded Memory Specification (EMS) or Extended Memory Specification (XMS) random access memory (RAM), and
applications could only store data in the additional space, not executable
code.
One
technique used on early IBM XT computers with Monochrome Display Adapter (MDA) or Color Graphics Adapter (CGA) displays was
to add more memory to the motherboard and use a custom address decoder programmable read-only memory (PROM) chip
to make it appear at 640 KB; this moved the barrier to 704 KB[1].
Memory
managers on 386-based systems (such as QEMM or MemoryMax in DR-DOS) could
achieve the same effect, adding conventional memory at 640 KB and moving the
barrier to 704 KB or 736 KB. Only CGA could be used in this situation, because enhanced graphics adapter (EGA) used this
memory for itself.
The
AllCard, an add-on memory management unit (MMU) for XT-class
computers, allowed normal memory to be mapped into the A0000-EFFFF (hex)
address range, giving up to 952 KB for DOS programs. Programs such as Lotus 1-2-3,
which accessed video memory directly, needed to be patched
to handle this memory layout. Therefore, the 640 KB barrier was removed at the
cost of hardware compatibility.
....................................... to be continued
No comments:
Post a Comment