virtual memory
<memory management> A system allowing a computer program to behave as
though the computer's memory was larger than the actual physical RAM. The excess
is stored on hard disk and copied to RAM as required.
Virtual memory is usually much larger than physical memory, making it possible
to run programs for which the total code plus data size is greater than the
amount of RAM available. This is known as "demand paged virtual memory". A page
is copied from disk to RAM ("paged in") when an attempt is made to access it and
it is not already present. This paging is performed automatically by
collaboration between the CPU, the memory management unit (MMU), and the
operating system kernel. The program is unaware of virtual memory, it just sees
a large address space, only part of which corresponds to physical memory at any
instant.
The virtual address space is divided into pages. Each virtual address output by
the CPU is split into a (virtual) page number (the most significant bits) and an
offset within the page (the N least significant bits). Each page thus contains
2^N bytes (or whatever the unit of addressing is). The offset is left unchanged
and the memory management unit (MMU) maps the virtual page number to a physical
page number. This is recombined with the offset to give a physical address - a
location in physical memory (RAM).
The performance of a program will depend dramatically on how its memory access
pattern interacts with the paging scheme. If accesses exhibit a lot of locality
of reference, i.e. each access tends to be close to previous accesses, the
performance will be better than if accesses are randomly distributed over the
program's address space thus requiring more paging.
In a multitasking system, physical memory may contain pages belonging to several
programs. Without demand paging, an OS would need to allocate physical memory
for the whole of every active program and its data. Such a system might still
use an MMU so that each program could be located at the same virtual address and
not require run-time relocation. Thus virtual addressing does not necessarily
imply the existence of virtual memory. Similarly, a multitasking system might
load the whole program and its data into physical memory when it is to be
executed and copy it all out to disk when its timeslice expired. Such "swapping"
does not imply virtual memory and is less efficient than paging.
Some application programs implement virtual memory wholly in software, by
translating every virtual memory access into a file access, but efficient
virtual memory requires hardware and operating system support.
(2002-11-26)
Nearby terms:
Virtual Machine/ESA « Virtual Machine/System Product
« Virtual Machine/XA « virtual memory »
Virtual Memory System » virtual path » virtual point
of presence
|