QuickStudy: Virtual machines

24.04.2006
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.