In computing, virtual memory is a memory management technique that enables process to use memory address space that is implemented using both hardware and software. Since, it can use memory space that is larger than the actual RAM memory present.
In system, using virtual memory you can divide the physical memory into two equal halves. Similarly, Memory space allocated for a process also can divided into logical pages of the same size. Memory manager fetches memory from disk that includes the referenced address when a process memory addresses, and place it in vacant physical page in the RAM.
The main advantages of virtual memory include freeing process from having to handle a shared memory address space, improved security due to memory separation, and being able to abstractly utilize more memory space than might be physically available, utilizing the technique of paging.
Many contemporary OS that support virtual memory also run every process in its personal dedicated address space. Every program thus looks to have only access to the virtual memory. Nevertheless, some older OS (including OS/VS1 and OS/VS2 SVS) as well as contemporary ones ( like IBM ) are single address space OS which runs all process in one address space consists of virtualized memory.
Embedded systems along with other special-purpose computer systems which need very quick and/or very reliable response times may opt not to employ virtual memory as a result of decreased determinism; virtual memory systems trigger unpredictable traps that may generate unnecessary "jitter" during I/O operations. It is because embedded hardware costs are often kept low by employing all such operations with software a method known as bit-banging) instead of with dedicated hardware.