DOS Memory Layout
As already mentioned earlier, the DOS operating system was designed for a computer with an Intel-8088 or Intel-8086 microprocessor. And these microprocessors can only access 1 megabyte of memory. Therefore, DOS programs can only address the first megabyte of memory, or rather, the memory that has addresses in the first megabyte.
The memory that DOS programs (and other programs designed for the Intel-8088 microprocessor) can directly use consists of two parts as follows.
Conventional memory - The first 640 Kbytes of memory can be used by application programs and the operating system.
The first 640Kbytes of memory can be used by application programs and the operating system. This part of memory is usually referred to as normal memory. Typically this part of memory is used by DOS, drivers, and so on.
The rest of the memory is free for use by the applications.
The remaining memory addresses, from 640 Kbytes to 1 Mbyte, are reserved for service purposes, in particular:
-to store BIOS - special programs that provide computer testing, initial OS booting, and basic low-level I/O services (usually BIOS is located in the higher addresses of the first megabyte of IBM PC Memory);
-to display an image on the screen;
-to store various BIOS extensions, which come with some controllers (video controller, disk controller, etc.).
Side note.
Generally, RAM occupied by BIOS and BIOS extensions is read-only; no data can be written there.This memory is known as ROM (read only memory), while computer memory with random access memory is known as RAM (random access memory). ROM is read-only memory and it is not affected by shutting down the computer - data it ROM doesn't get lost after power on.
The amount of free RAM is especially important for DOS programs, that is the amount of free RAM not used by DOS, drivers and resident programs.
Mostly, the total size of the regular computer memory is 640 Kbytes, of which 16-100 Kbytes are occupied by DOS, drivers and resident programs. The rest of the regular memory can be used by the application programs.
So, for DOS-programs available RAM had to be less than 640 Kbytes. In the early 80s, when the IBM PC was developed, the possibility to work with 640 Kbytes of memory was a big step forward: other computers could only work with 64 Kbytes of memory that days. By the way, the first IBM PCs had only 256Kbytes of memory, even though they cost about $5000.
But very soon it became clear that 640 Kbytes was not enough for many programs (the more so, out of 640 Kbytes up to 100 Kbytes could be used by DOS and different system programs - device drivers and resident programs). And a very wide range of programs (for example, table processors, publishing systems, graphic editors, And a very wide range of programs (desktop processors, publishers, graphic editors, many scientific and engineering programs, etc.) require access to the Internet for their real-world applications. These programs require access to a much larger amount of memory, at least several Mbytes at minimum, to effectively handle real life applications. at least a few Mbytes. After all, 640 Kbytes is not that much: even one matrix of real numbers.
One 300x300 real number matrix requires more space!
And very soon ways to increase the amount of RAM available to programs, were found. Namely, two new kinds of memory were introduced: EMS memory and extended memory.