
In computing, virtual memory is a memory management technique developed for multitasking kernels; this technique virtualizes a computer architecture's various hardware memory devices (such as RAM modules and disk storage drives), allowing a program to be designed as though:
* there is only one hardware memory device and this "virtual" device acts like a RAM module.
* the program has sole access to this virtual RAM module as the basis for a contiguous working memory (an address space).
Systems that employ virtual memory:
* utilize hardware memory more efficiently than systems without virtual memory.
* make the programming of applications easier by:
o hiding fragmentation.
o delegating to the kernel the burden of managing the memory hierarchy; there is no need for the program to handle overlays explicitly.
o obviating the need to relocate program code or to access memory with relative addressing.
A generalization of virtual memory is called memory virtualization.
Virtual memory is an integral part of a computer architecture; all implementations (excluding emulators and virtual machines) require hardware support, typically in the form of a memory management unit built into the CPU. Consequently, older operating systems (such as DOS of the 1980s or those for the mainframes of the 1960s) generally have no virtual memory functionality, though notable exceptions include the Atlas, B5000, IBM mainframe systems of the early 1970s, and the Apple Lisa project circa 1980.
Embedded systems and other special-purpose computer systems which require very fast and/or very consistent response times may opt not to use virtual memory due to decreased determinism; virtual memory systems trigger unpredictable interrupts that may produce unwanted "jitter" during I/O operations. This is because embedded hardware costs are often kept low by implementing all such operations with software (a technique called bit-banging) rather than with dedicated hardware. In any case, embedded systems usually have little use for multitasking features or complicated memory hierarchies.
The program thinks it has a large range of contiguous addresses; but in reality the parts it is currently using are scattered around RAM, and the inactive parts are saved in a disk file.
No comments:
Post a Comment