|MadSci Network: Computer Science|
Greetings, This question feels like a relic of the past :), because these days the only type of memory you will find in a modern computer is extended memory. Back in the days of the 086 Intel chips, the memory map was designed to have a range of addresses from 640K to 1M assigned to various tasks like shadowing the BIOS, or the video memory, etc. This put a hard cap on available memory for early computers at 640 Kbytes. Just tacking on more memory to the top of this pile wasn't easy for new computers, because of these devices like the BIOS and the video memory that needed to reside between 640K and 1M. Memory for your programs wouldn't be contiguous at that point, but instead would have to have a hole in the middle of it. To compound the problem, early CPU's couldn't even ask for addresses of memory larger than 1M. To get around this problem "expanded" memory was devised. By using a special driver, memory beyond 1M would be paged in and out of the space between 0 and 1M. So your program would then have to use this special driver interface to ask for certain addresses of memory. In some cases the driver was implemented in hardware, which allowed computers to have expanded memory built in. But in most cases, extended memory (or memory without the need for this special driver) was used, and a special expanded memory emulator (EMM for example) was used to turn the extended memory into expanded memory. With the advent of newer operating systems, like Windows 95, the operating system takes care of memory above 1M. Your program never has to deal with the issue of whether there is a big hole around 640K, or whether the memory is above 1M. Newer CPU's and bus architectures allow addressing of memory up to 1 or more Gigabytes (1000 Megabytes), making Windows' job even easier. Hope this clears things up for you! -Dave Gould
Try the links in the MadSci Library for more information on Computer Science.