Virtual machines

A process virtual machine is a programming environment that allows a program written for one type of machine to run on other types of machine without any changes being necessary. For example, the Java Virtual Machine allows Java bytecode produced on a Microsoft Windows OS to run on a Unix OS without any changes.

A system virtual machine is a software application run by the host operating system of a computer which emulates a second operating system. This permits the installation and execution of software applications on the virtual machine (VM) as if they were being installed and run on a separate computer.

For example, it is possible to run a Microsoft Windows Virtual Machine on an Apple Mac - allowing software applications that only work on the Microsoft Windows OS to be run via the VM, which in turn is run on the Mac.

A virtual machine can run several operating systems within another operating system