Path: utzoo!attcan!uunet!husc6!purdue!spaf@cs.purdue.edu From: spaf@cs.purdue.edu (Gene Spafford) Newsgroups: comp.os.misc Subject: Re: a very naive Question??? Message-ID: <5085@medusa.cs.purdue.edu> Date: 12 Oct 88 04:42:46 GMT References: <835@amethyst.ma.arizona.edu> Sender: spaf@cs.purdue.EDU Reply-To: spaf@cs.purdue.edu (Gene Spafford) Organization: Department of Computer Science, Purdue University Lines: 27 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. That is, if the software generates some address like 5 for a storage location, and if the binding to a physical address COULD POSSIBLY be to a hard physical address different from 5, then that implies virtual memory (let's not try to twist this to include fault handling, etc.). Virtual memory includes, possibly, pages, segments, overlays, base register addressing, and some forms of swapping. Virtual memory does not mean that the virtual address range is bigger than the physical address range -- it could be smaller, as in the case of old CDC machines that had megabytes of memory but could only run program images of a few 100K. Swapping is not per se virtual memory. If you swap images in and out of the exact same addresses, and if there is no translation of the addresses after any swap, then that is not virtual memory. The "virtual" means that the memory looks as if it were the range of physical addresses specified by the program. That's how I've taught it in OS courses at both Purdue and Georgia Tech, and that's consistent with many OS texts....