Virtual memory was designed in the late 60’s to provide automated storage allocation. It is a technique for managing the resource of physical memory that provides to the application an illusion of a very large amount of memory—typically much larger than is actually available. In a virtual memory system, only the most-often used portions of a process’s address space actually occupy physical memory; the rest of the address space is stored on disk until needed. When the mechanism was invented, computer memories were physically large (one kilobyte of memory occupied a space the size of a refrigerator), they had access times comparable to the processor’s speed (both were extremely slow), and they came with astronomical price tags. Due to space and monetary constraints, installed computer systems typically had very little memory—usually less than the size of today’s on-chip caches, and far less than the users of the systems would have liked. The virtual memory mechanism was designed to solve this problem, by using a system’s disk space as if it were memory and placing into main memory only the data used most often. Since then we have seen constant evolution (and revolution) in the computer industry. Typical microprocessors today have more on-chip cache than the core memory found in multi-million-dollar systems of yesterday and cost orders of magnitude less. Today, memory takes up very little space: You can easily hold a gigabyte of DRAM in your hand. In recent decades, processor designers have focused on improving speed while memory-chip designers have focused on improving storage size, and, as a result, memory is now extremely slow compared to processor speeds. Due to rapidly decreasing memory prices, it is usually possible to have enough memory in one’s machine to avoid using the disk as a back-up memory
[1]
Trevor N. Mudge,et al.
Virtual memory in contemporary microprocessors
,
1998,
IEEE Micro.
[2]
Trevor N. Mudge,et al.
Uniprocessor Virtual Memory without TLBs
,
2001,
IEEE Trans. Computers.
[3]
Trevor N. Mudge,et al.
Virtual Memory: Issues of Implementation
,
1998,
Computer.
[4]
Samuel J. Leffler,et al.
The design and implementation of the 4.3 BSD Unix operating system
,
1991,
Addison-Wesley series in computer science.
[5]
Armando P. Stettner.
The design and implementation of the 4.3BSD UNIX operating system
,
1988
.
[6]
Trevor N. Mudge,et al.
A look at several memory management units, TLB-refill mechanisms, and page table organizations
,
1998,
ASPLOS VIII.
[7]
Elliott I. Organick,et al.
The multics system: an examination of its structure
,
1972
.
[8]
Douglas W. Clark,et al.
Performance of the VAX-11/780 translation buffer: simulation and measurement
,
1985,
TOCS.
[9]
David L Weaver,et al.
The SPARC architecture manual : version 9
,
1994
.