virtual memory

(redirected from /dev/drum)
Also found in: Dictionary, Thesaurus, Wikipedia.

virtual memory

[′vər·chə·wəl ′mem·rē]
(computer science)
A combination of primary and secondary memories that can be treated as a single memory by programmers because the computer itself translates a program or virtual address to the actual hardware address.

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.

virtual memory

Simulating more random access memory (RAM) than actually exists, allowing the computer to run larger programs and multiple programs concurrently. A common function in most every OS and hardware platform, virtual memory uses the hard disk to temporarily hold what was in real memory.

Virtual memory allows multiple programs to load in memory at the same time. Each application addresses memory starting at zero, but virtual memory takes control of the memory addressing and lets each application function as if it had unlimited memory.

Note that virtual "memory" and virtual "machine" are not the same. Virtual memory is used all the time, whereas a virtual machine is an optional approach for running applications (see virtual machine).

Virtual Memory Pages
The computer's real memory is broken up into smaller segments, called "pages," typically 4KB in size. When real memory fills up, pages not currently in use by open applications are written to a virtual memory "swap file" on the disk for temporary storage. When any swapped out page is required again, once again a page in real memory is written to the disk to make room, and the disk page is retrieved. Memory is the computer's workspace, and since there is often a hundred times more disk space than memory space, virtual memory dramatically increases the computer's capacity to do work. However, there is a penalty. When a user has too many open programs, there can be excessive amounts of page swapping, causing applications to slow down. In addition, switching between applications is no longer immediate (see thrashing).

Hardware Is Required
Virtual memory can be implemented in software only, but efficient operation requires specialized hardware circuits. All modern, general-purpose CPUs have memory management units (MMUs) that support virtual memory. They provide "page tables" that are used to translate between the program's "virtual" addresses and the "real" addresses in memory and disk, which may change at any time. Although a program may initially load as a contiguous block of code, it can wind up in pages randomly scattered around real memory.

Virtual memory claims are sometimes made for specific applications that bring additional parts of the program in as needed; however, true virtual memory is built into the operating system and hardware and works with all applications. See Windows swap file.

Memory Is Extended to Disk
Virtual memory allows more programs to be opened simultaneously by using the hard disk as temporary storage of memory pages.

Page Out, Page In
When memory is full and the current program needs instructions that are not in memory, pages are swapped. In this example, program A needs a page from the disk, and a page from program C is swapped out to make room.