Virtual Memory is the idea that every process has it's own address space, the memory address 0x000000AB is difference for every process because that address is virtual and is only a pointer to the physical address. The only things that can see real, physical addresses are the kernel and the hardware. On a 32-bit system every process has 4G of Virtual Memory no matter how much physical memory is present, usually 2G of that space is reserved for the kernel. Virtual Memory protects processes from other processes and allows for things like demand paging and swapping to disk. Swapping is just the ability to put some memory pages in another location to make room in physical memory, technically I could swap out to the network, tape, cdrw, etc it doesn't matter as long as I have a kernel system that can read/write memory pages to that location.