At the simplest level, computing environments are thought to consist of hardware, an operating system that runs on the hardware and applications that run on the OS -- though in embedded systems, the operating system is sometimes eliminated and applications run directly on the hardware. The OS is aware of all the capacity and capability of the underlying hardware and controls it directly.
If another layer of software were placed between the OS and the CPU, then the OS would know only what that extra layer of software told it. Its understanding of the capacity and capability of the underlying hardware would depend on the intervening software layer, and it would be able to control the underlying hardware only in ways the intervening layer of software allowed it to.
The intervening layer of software could tell the OS everything there was to know about the hardware and simply pass through control directives without translation. But it also might not reveal everything about the underlying hardware and might add some control of its own as it passes on the control directives to the OS.
In either case, the configuration would not be the standard tripartite configuration. It would be one of the many possible configurations that is called a virtual machine.
Of course, there are servers, networks and Web interfaces, as well as other devices and interfaces, that add nuance and complexity to computing environments. But using a software layer to package a set of computing resources and behaviors and to present it as an available computing environment is at the core of what it means to create a virtual machine.
A virtual machine is a computing environment whose set of resources and behaviors is built (through software) on top of some other computing environment.
Virtual machines are at the core of server technologies like VMware Inc.'s ESX Server and the open-source Xen virtual machine monitor. Both of these products offer servers that run multiple x86-based OSs simultaneously. Their approaches are slightly different variations of what are called hardware-level, bare-metal or hypervisor virtual machines. The intermediary software layer (called the virtual machine monitor or hypervisor) is between the OS and the hardware. The hypervisor gives all the OSs that are running the illusion that they are the only OS running on the hardware.
Running multiple OSs on one server platform offers several advantages. It makes it possible to more fully use the resources of very powerful servers, provide backward compatibility for legacy programs and partition applications to different OSs so they can't corrupt one another.
VMware uses transparent virtualization, which means that the OSs that run on the hypervisor do not need to be modified. Xen uses paravirtualization, which means that it needs to modify the OSs to make them run simultaneously on the hardware. Xen claims that paravirtualization increases speed and efficiency.