Limited Memory
Productive Solution

by Robert Hamill

Distillation of the Past
Snapshot of the Present
Cauldron of the Future
                  - Memory

   Computers, in their short fifty year history, have brought undoubted power in the analysis of data; but very quickly, limits to their power were noted.
   The subject of this paper is the programming constraint of limited real memory size, the two primary methods devised to circumvent it, and the beneficial fallout from the second of the two methods.
   Let's consider a computer of a fixed memory size. What happens when the programmer is faced with a problem that requires more memory than the fixed amount available? If the problem is of sufficient importance, it becomes necessary to find a way to run this too-large program.

 

   It must be commented here that it is a general principle, that given a certain capability, once we learn how to use it we immediately test its limits and focus on them. No matter the real memory size available - 16 KiloBytes, 16 MegaBytes, or 16 GigaBytes, developers and clients will always thirst for those applications that defy the limits.
   Two general methods to avoid this real memory limitation have been developed - overlay structures and virtual memory.
   First to be developed was the method of overlays. (Computer Science, being a young science, is not encrusted with names and history. I was surprised that I didn't find, for example, the Shannon method of overlays or DEC's theorem of virtual memory.) With overlays, a section of code is loaded overtop a previously loaded (and not currently needed) section of the same program. Of course, a small part of the program must always remain resident to manage the overlays. It's the programmer's task to divide the program into sections that are semi-autonomous. (We can see a need that foreshadows modular design theory - high coherence and low coupling.)

1
Software Development
Copyright 2005
TOC