Virtual memory

virtual storagememoryswapswap spacevirtualvirtual address spacevirtual address translationdynamic address translationPaged Virtual Memory/Virtual Storage
In computing, virtual memory (also virtual storage) is a memory management technique that provides an "idealized abstraction of the storage resources that are actually available on a given machine" which "creates the illusion to users of a very large (main) memory."wikipedia
467 Related Articles

Computer memory

memorymemoriesmain memory
The computer's operating system, using a combination of hardware and software, maps memory addresses used by a program, called virtual addresses, into physical addresses in computer memory.
If needed, contents of the computer memory can be transferred to secondary storage; a very common way of doing this is through a memory management technique called "virtual memory".

Memory management unit

MMUMMUsBlock Address Translation
Address translation hardware in the CPU, often referred to as a memory management unit or MMU, automatically translates virtual addresses to physical addresses. Virtual memory is an integral part of a modern computer architecture; implementations usually require hardware support, typically in the form of a memory management unit built into the CPU.
An MMU effectively performs virtual memory management, handling at the same time memory protection, cache control, bus arbitration and, in simpler computer architectures (especially 8-bit systems), bank switching.

Paging

swap spaceswap fileswap
The primary benefits of virtual memory include freeing applications from having to manage a shared memory space, increased security due to memory isolation, and being able to conceptually use more memory than might be physically available, using the technique of paging. Paging was first implemented at the University of Manchester as a way to extend the Atlas Computer's working memory by combining its 16,384 words of primary core memory with an additional 98,304 words of secondary drum memory.
Paging is an important part of virtual memory implementations in modern operating systems, using secondary storage to let programs exceed the size of available physical memory.

Operating system

operating systemsOScomputer operating system
The computer's operating system, using a combination of hardware and software, maps memory addresses used by a program, called virtual addresses, into physical addresses in computer memory.
MCP also introduced many other ground-breaking innovations, such as being the first commercial implementation of virtual memory.

Memory address

addressaddressesmemory location
The computer's operating system, using a combination of hardware and software, maps memory addresses used by a program, called virtual addresses, into physical addresses in computer memory.
In early computers logical and physical addresses corresponded, but since the introduction of virtual memory most application programs do not have a knowledge of physical addresses.

Overlay (programming)

overlaysoverlayOVL
Virtual memory makes application programming easier by hiding fragmentation of physical memory; by delegating to the kernel the burden of managing the memory hierarchy (eliminating the need for the program to handle overlays explicitly); and, when each process is run in its own dedicated address space, by obviating the need to relocate program code or to access memory with relative addressing.
An embedded system would normally use overlays because of the limitation of physical memory, which is internal memory for a system-on-chip, and the lack of virtual memory facilities.

Virtual machine

virtual machinesVMvirtual server
While not necessary, emulators and virtual machines can employ hardware support to increase performance of their virtual memory implementations.
In some respects, a system virtual machine can be considered a generalization of the concept of virtual memory that historically preceded it.

Computer data storage

main memorystoragememory
Virtual memory makes application programming easier by hiding fragmentation of physical memory; by delegating to the kernel the burden of managing the memory hierarchy (eliminating the need for the program to handle overlays explicitly); and, when each process is run in its own dedicated address space, by obviating the need to relocate program code or to access memory with relative addressing. Main storage, as seen by a process or task, appears as a contiguous address space or collection of contiguous segments.
Additionally, a memory management unit (MMU) is a small device between CPU and RAM recalculating the actual memory address, for example to provide an abstraction of virtual memory or other tasks.

Address space

addressaddressableaddressed
Main storage, as seen by a process or task, appears as a contiguous address space or collection of contiguous segments. Most modern operating systems that support virtual memory also run each process in its own dedicated address space.
An iconic example of virtual-to-physical address translation is virtual memory, where different pages of virtual address space map either to page file or to main memory physical address space.

Michigan Terminal System

MTSMTS (Michigan Terminal System)University Computer Center
The software may be described as a multiprogramming, multiprocessing, virtual memory, time-sharing supervisor that runs multiple resident, reentrant programs.

Process (computing)

processprocessesprocessing
Most modern operating systems that support virtual memory also run each process in its own dedicated address space.
When the process is in the blocked state, it is eligible for swapping to disk, but this is transparent in a virtual memory system, where regions of a process's memory may be really on disk and not in main memory at any time.

Memory virtualization

Memory virtualization can be considered a generalization of the concept of virtual memory.
Memory virtualization technology follows from memory management architectures and virtual memory techniques.

IBM System/360 Model 67

IBM System/360-67System/360 Model 67Model 67
Unlike the rest of the S/360 series, it included features to facilitate time-sharing applications, notably a Dynamic Address Translation unit, the "DAT box", to support virtual memory, 32-bit addressing and the 2846 Channel Controller to allow sharing channels between processors.

THE multiprogramming system

THETHE operating system
The THE system apparently introduced the first forms of software-based paged virtual memory (the Electrologica X8 did not support hardware-based memory management), freeing programmers from being forced to use actual physical locations on the drum memory.

OS/VS1

VS1Operating System/Virtual Storage 1Tone
However, some older operating systems (such as OS/VS1 and OS/VS2 SVS) and even modern ones (such as IBM i) are single address space operating systems that run all processes in a single address space composed of virtualized memory.
OS/VS1, in comparison to its predecessor, supported virtual memory (then called virtual storage).

Central processing unit

CPUprocessorprocessors
Virtual memory is an integral part of a modern computer architecture; implementations usually require hardware support, typically in the form of a memory management unit built into the CPU.
Most high-end microprocessors (in desktop, laptop, server computers) have a memory management unit, translating logical addresses into physical RAM addresses, providing memory protection and paging abilities, useful for virtual memory.

Atlas (computer)

AtlasAtlas ComputerFerranti Atlas
Paging was first implemented at the University of Manchester as a way to extend the Atlas Computer's working memory by combining its 16,384 words of primary core memory with an additional 98,304 words of secondary drum memory.
It is notable for being the first machine with virtual memory (at that time referred to as 'one-level store') using paging techniques; this approach quickly spread, and is now ubiquitous.

Burroughs MCP

MCPMaster Control ProgramUnisys MCP
The MCP was the first commercial OS to provide virtual memory, which has been supported by the Burroughs large systems architecture since its inception.

GE-600 series

GE 635GE-645GE-635
Multics was supported by virtual memory additions made to later versions of the series.

Computer architecture

architecturearchitecturesCPU architecture
Virtual memory is an integral part of a modern computer architecture; implementations usually require hardware support, typically in the form of a memory management unit built into the CPU.
For example, a computer capable of running a virtual machine needs virtual memory hardware so that the memory of different virtual computers can be kept separated.

RCA Spectra 70

Spectra 70SpectraSpectra 70/35, /45 & /55
The systems that supported virtual memory, the Spectra 70/46 and 70/61 and the later RCA 3 and 7, could also run the RCA's Virtual Memory Operating System (VMOS).

TSS (operating system)

TSS/360TSS/370System/360 Model 67 Time Sharing System
It also implemented Virtual Memory and Virtual Machines using position-independent code.

OpenVMS

VMSVAX/VMSDECwindows
The first minicomputer to introduce virtual memory was the Norwegian NORD-1; during the 1970s, other minicomputers implemented virtual memory, notably VAX models running VMS.
OpenVMS is a multi-user, multiprocessing virtual memory-based operating system (OS) designed for use in time-sharing, batch processing, and transaction processing.

Memory management (operating systems)

partitionspartitionmemory partition
In computing, virtual memory (also virtual storage) is a memory management technique that provides an "idealized abstraction of the storage resources that are actually available on a given machine" which "creates the illusion to users of a very large (main) memory."
Unlike virtual storage—paging or segmentation, rollout/rollin does not require and special memory management hardware; however, unless the system has relocation hardware such as a memory map or base and bounds registers, the program must be rolled back in to its original memory locations.

VAX

DEC VAXVAX 11/780DEC VAX ULTRIX
The first minicomputer to introduce virtual memory was the Norwegian NORD-1; during the 1970s, other minicomputers implemented virtual memory, notably VAX models running VMS.
The VAX architecture's primary features were virtual addressing (for example demand paged virtual memory) and its orthogonal instruction set.