What is Virtual Memory? A Very simple
Explanation in Plain English.
Short answer is nothing. Its very surprizing that this name has been used as a misnomer since ages.
The name 'virtual memory' itself may give an undesired impression to someone hearing/reading it for the first time.
Factually there is nothing called virtual memory. Every memory address that a proessor generates must have a unique location in some physical memory.
So what is this misnomer called 'virtual memory'?
A computer system has a hierarchical memory structure, with the fastest and most expensive memories physically located close to the processor, and slowest and cheap memories physically located away from the processor. Example of fast memory is cache memory. Example of slow memory is Hard disk.
More examples of fast memories, fastest and smallest comes first : L1 Cache, L2 Cache, S-RAMs, D-RAMs.
More examples of slow memories: Flash Memory, PS-RAM memory, Hard Disk Drive.
Only a tiny fraction of the Hard-Disk storage can reside inside cache or SRAM or DRAM. This is because SRAM/DRAMs are very expensive (per MegaByte of storage), and hence smaller and Hard Disk storage is very cheap and hence quite large. Also the SRAM/DRAM are volatile memories, that means they loose their contents on power-off, while Hard-disk is non-volatile, means they retain contents upon power off.
When a processor accesses a location for example it issues a read command to an address (say A0), the data corresponding to that location (address), say D0 can be either in Cache, or DRAM or in the worst case in the Hard Disk. Note that at startup, i.e. immediately after power on, the D0 will always be in non-volatile memory, e.g. ROM, or a Hard Drive.
If the data D0 corresponding to Address A0, is
present in Hard Disk Only, then this data, and also the data
corresponding to all near by locations are fetched from Hard-disk
into onchip RAMs and/or cache. The unit of the data transfer is
called 'page'. i.e one page of worth data will be transferred into
on-chip RAMs from the Hard Disk.
Somehwere in this page the D0 corresponding to A0 must be present.
Once the entire page has been transferred, the execution of the
processor will be quite fast.
Now, they say the Hard-Disk is acting as a 'Virtual Memory' for the processor. Does the name 'virtual memory' makes any sense? No, not to me at least.
On-Chip RAMs can store multiple 'pages' of memory. So as long as the processor is issuing addresses which falls in any of those pages that are currently (at the time access is issued) residing in on-chip RAMs, the processor would work faster. But if the processor issues an address which does not fall in any of the on-chip pages currently in the RAMs, then a fetch cycle must start, and the corresponding page must be fetched from hard-disk and stored in on-chip RAMs. Of course, to make space for this page, an existing page in RAMs may have to be discarded. The processor may 'stall' for sometime, till the new page is avaialble, but thereafter it would again gain speed. On average, the page fetches are less frequent which means, the processor execution is made efficient and faster using this 'paging' scheme, while keeping the costs of memory storage checked.
They say by using his scheme of memory management, the processor is led to believe it has a lot more memory than actual memory, hence this scheme is termed as 'virtual memory'. Nope, there isn't any more memory than there actually is.