Virtual memory is the idea that the application "sees" a "block of memory" of a given size. The application can use this memory as it sees fit. This block of memory is "virtual" in the sense that it comes from different parts. Some of it may be in the main memory of the computer, but some may also be on disk. The CPU has a special part, called Arithmetic Logic Unit which does some of the translations between application memory and system resources. Modern operating systems also do a part of this work.