02-09-2017, 01:24 PM
In computing, virtual memory is a memory management technique that is implemented using hardware and software. Displays the memory addresses used by a program, called virtual addresses, in physical addresses in the computer's memory. The main storage, seen by a process or a task, appears as a contiguous address space or a collection of contiguous segments. The operating system manages virtual address spaces and assigns real memory to virtual memory. Address translation hardware on the CPU, often referred to as a memory management unit or MMU, automatically translates virtual addresses to physical addresses. Software within the operating system can extend these capabilities to provide a virtual address space that can exceed the actual memory capacity and hence refer to more memory than is physically present on the computer.
The primary benefits of virtual memory include the release of applications from having to manage a shared memory space, increased security due to memory isolation and to be able to conceptually use more memory than could be physically available, using the paging technique.
Virtual memory facilitates the programming of applications by hiding the fragmentation of physical memory; delegating to the kernel the burden of managing the memory hierarchy (eliminating the need for the program to explicitly handle overlays); and when each process runs in its own dedicated address space, avoiding the need to relocate the program code or access memory with relative addressing.
The primary benefits of virtual memory include the release of applications from having to manage a shared memory space, increased security due to memory isolation and to be able to conceptually use more memory than could be physically available, using the paging technique.
Virtual memory facilitates the programming of applications by hiding the fragmentation of physical memory; delegating to the kernel the burden of managing the memory hierarchy (eliminating the need for the program to explicitly handle overlays); and when each process runs in its own dedicated address space, avoiding the need to relocate the program code or access memory with relative addressing.