[comp.os.misc] Defining virtual memory

rfm%urth@Sun.COM (Rich McAllister) (10/15/88)

In article <5102@medusa.cs.purdue.edu>, spaf@cs.purdue.edu (Gene Spafford) 
writes:
>The definition I use in teaching OS courses is the following:
> 
>If the address presented to the system may be bound to a physical
>address different from that seen by the program, you have
>virtual memory.

Later, in article <5085@medusa.cs.purdue.edu>, he remarks: 

>The definition I gave happens to cover the memory scheme on systems
>your definition doesn't -- like TSO on a 360, old NOS on a  CDC 6600,
>and various DEC OS systems on their earlier PDP machines.

I think this demonstrates the best reason not to use this definition of
"virtual memory" -- it loses the history of the term.  The term was
popularized by IBM when it introduced the 370/158 and /168 and OS/VS -- the
main distinction drawn between the new OS and the old was: the new one has
virtual memory, the old one doesn't.

Also, the common definition of virtual is "existing in appearance but not 
in fact," which doesn't seem to apply to a simple remapping of addresses
of memory which exists "in fact".

A proper definition of "virtual memory" should capture the idea that the
data stored in a part of the address space may be held somewhere other
than in main storage when not being referenced.  


Rich McAllister (rfm@sun.com)

haynes@ucscc.UCSC.EDU (99700000) (10/15/88)

In article <73039@sun.uucp> rfm@sun.UUCP (Rich McAllister) writes:
>Also, the common definition of virtual is "existing in appearance but not 
>in fact," which doesn't seem to apply to a simple remapping of addresses
>of memory which exists "in fact".
Wellll - maybe so, maybe not.  Maybe it's not the storage itself that
"exists in appearance but not in fact" but rather some other attribute
of memory, such as how it is addressed.  For instance, let's consider
the old base-address-and-boundary register scheme such as the GE635
and its descendants employed.  Now here all the memory the user program
sees is really there; but the virtual addresses, those used by the
user program, are in a space that begins at address zero.  But only
the entire virtual space can reside either in main memory or not
in main memory when it's swapped out.  There is no provision for
part of the space to be resident and part non-resident.  Yet I would
say that this memory is in some sense virtual.
>
>A proper definition of "virtual memory" should capture the idea that the
>data stored in a part of the address space may be held somewhere other
>than in main storage when not being referenced.  
>
>
>Rich McAllister (rfm@sun.com)

Well, then, we need some other term to use for the larger class of
schemes in which addresses in programs are mapped before being used
to address physical memory.
haynes@ucscc.ucsc.edu
haynes@ucscc.bitnet
..ucbvax!ucscc!haynes

"Any clod can have the facts, but having opinions is an Art."
        Charles McCabe, San Francisco Chronicle

bob@tolerant.UUCP (Bob Lee) (10/19/88)

From the book "Virtual Memory Management" by Richard William Carr
(UMI Research Press), pg 2.

    The three basic elements of virtual memory, as illustrated in
    figure 1.1, are the *virtual address space*, the *main memory*,
    and the *auxiliary memory*.  Each task's program and data are
    contained in a virtual memory address space, which appears to be
    a private and dedicated area of the computer's main random-access
    memory.  In reality, the address space is only an *illusion* of
    physical memory that is created by the coordinated action of
    specialized hardware and operation system software.  In general,
    the illusion is not detectable by the task.

(The asterisks denote itallics in the original text)

The book is excellent, and has a five page bibliography at the end.
I normally don't post because by the time I read it and respond someone
else has answered quite often better than I can.  I found two things
annoying in the postings 1) the degeneration to personal attacks which
limits if not destroys dialogue and 2) it seems that no one mentioned
the "first" (earliest date I could find on a paper) system that used
virtual memory (ATLAS) or mentioned (let alone quoted) Denning, who has
done a termendous amount of work on the subject.

The above definition is not quite adequate today in the face of new
features such as shared data segments, and diskless workstations.
There is work being done at CMU in the MACH os that has a concept of
imaginary memory; however, the above definition serves as a good place
to start.

-bob
------------------------------------------------
opinions as always are my own, and should not be blamed on my company