Friday 23 November 2012

Conventional memory(part 1)


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