
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.)