Introduction to memory
Memory is an area where programs are stored and from where they can be executed.
A PC compatible computer has three types of memory:
The amount of memory present (and available) in a system can be found by running the following command: "mem" (or "mem /c |more" for more detailed information).
conventional memory is that part of memory where programs may load without any specific instructions. The amount of conventional memory varies from 256 KB to 640 KB (on all recent computers: 386, 486, Pentium, etc.).
The amount of memory available is the memory remaining after DOS has been loaded into memory (i.e. the operating system, device drivers and all commands loaded from the config.sys and autoexec.bat).
Extended memory enables the system to access more memory. This type of memory is available on computers equipped with a 80286 type processor or higher.
Programs normally only recognise conventional memory addresses, to access the storage area located beyond the 640 KB, programs need specific instructions. A program that manages access to extended memory, for example it prevents two programs from using the same area of memory at the same time. This program is called "extended memory manager".
MS-DOS comes with the standard extended memory manager called HIMEM.SYS (it is also found in Windows 98). It is loaded in the config.sys by adding the line:
where path is the access path to the file.
Another method of accessing memory beyond the first 640 KB is to use paged memory. Some programs (few nowadays) are optimized to use this type of memory.
As with extended memory, this type of memory requires a program to manage it, it is called "paged memory manager". Programs designed to use this type of memory cannot access it directly: the memory manager must copy <a href="/contents/systemes/memoire.php3">
sections</a> of 16 KB of memory (called pages) into an area (called frame segment) located in the high memory area. This type of memory was developed before extended memory, this memory is thus slower and only allows usage of one limited portion of memory at any given time.
Many systems have 384 KB of high memory (HMA, High Memory Addresses), located directly after the 640 KB of conventional memory. This area of memory can be used by hardware. Areas not used by hardware are called "upper memory blocks" (UMB), they allow programs to be run in paged memory.