hedrick@geneva.rutgers.edu (Charles Hedrick) (10/15/88)
Someone asked what is virtual about memory in the definition spaf is using. Perhaps it should best be called a virtual address space rather than virtual memory, to make it clearer what is going on. Please recall that on the old 360's, programs had to know the actual physical address they were located at. This mean you could roll out a partition but you had to roll it back in at the same location. The big advance of virtual addressing was that all programs could be written and linked to assume that they had an address space to themselves, usually starting at 0. The system could then map that to whatever physical memory it wanted. This was part of the whole virtual machine concept, where programs no longer had to worry about the physical hardware they were using. Programs also had virtual disks. Again, the point was that it appeared to you to be a whole disk that you had completely to yourself. (Are you going to refuse to call it a virtual disk unless half of it can be paged out onto tape?) You are using a virtual address space when you have an entire address space starting from 0 to yourself, and don't have to worry where it is put physically. I suspect that the word virtual should be taken as having a fairly broad definition: you have a virtual X when something about the program's view of X differs (or might differ) from its physical implementation. If we want to talk about some specific concept such as demand paging, or the ability to have programs larger than physical memory, we should use a specialized term. I think these days most people view one of the main jobs of an OS as being to present a simple, clean virtual machine to the user. Almost all resources that people use these days are virtual.