Reading online there seems to be some confusion over the term 'Virtual Memory'. It seems to describe either two concepts, one being each process having its own virtual address space, and the other being the idea of being able to page to a secondary drive. I assume in nearly all new OSs they implement 'both'.
My question is, do these two concepts have to be implemented together? When looking online for information they seem to be always mentioned together, but is it possible to have one without the other?
For example, I know I can disable having a swap file on my system, therefore each process still has it's own virtual address space and is still implementing virtual memory, but isn't paging to a secondary drive.
In theory, not that this would happen, but could you implement a system that uses paging but not virtual address spaces for each process, technically would this still be using virtual memory?
When we talk about 'virtual memory', which concept are we specifically talking about, or is it both?
Any help clearing up my confusion would be appreciated, thanks.
The terms logical memory and virtual memory have usually been conflated.In ye olde days that was not much of a problem because the two came hand-in-hand. Now, with large memory system, we are likely to see logical memory stay and virtual memory go away.
Logical memory is the remapping of physical memory to a linear address space. Virtual memory is the simulation of physical memory by using disk storage.
It is entirely possible to have a system implement logical memory without having virtual memory. However, nearly every major operating system (including Linux and Windoze) are disk-based, virtual memory systems. It would not be possible to convert them to non-virtual memory simply by switching off page fault handling and getting rid of the page files.
If I were running M$ I would be developing a Windoze replacement that is designed for large memory without disk backing.