The name of various language interpreters. See Java Virtual Machine
A virtual machine (VM) is an operating system and one or more apps running in an isolated partition within the computer. Depending on the size of the hardware, any number of VMs can be running. The more CPU cores, the more simultaneity (see multicore
). For example, when cloud computing servers are used, it is one or more virtual machines that the customer is actually renting (see cloud computing
Dating back to the 1960s, virtual machines (VMs) are widely used to run multiple instances of the same OS, each running a different set of applications. The separate instances prevent apps from interfering with one another after a crash, especially when testing new software. Virtual machines are also widely used to run different operating systems in the same machine. For example, a Mac running Windows alongside macOS is creating a virtual environment for Windows.
Not Dual Boot or Multiboot
Virtual machines differ from a dual-boot or multiboot setup, whereby the user has to choose from a menu which OS to use at startup (see dual-boot
). A virtual machine (VM) contains an OS and applications, and any changes require a reconfiguration of the software in the VM.
Non-Virtual Versus Virtual
Advantages of Virtualization
#1 - Consolidation
Multiple operating systems can run in the same server, eliminating the need to dedicate a single machine to each OS. New OS versions can be deployed and tested without adding hardware. In the datacenter, multicore servers with many threads of execution save space and power.
#2 - Stability and Security
Troubleshooting can be daunting when conflicts arise in supposedly stable apps. Prior to virtualization, cautious system administrators hosted each type of application in a separate server even if grossly underutilized. However, VMs are isolated from each other, and a security breach in one does not affect the others.
#3 - Development Flexibility
A virtualized computer can host numerous versions of an operating system, allowing developers to test their programs in different OS environments on the same machine.
#4 - Migration and Cloning
Virtual machines function like self-contained packages that are said to be "decoupled from the hardware." It is relatively easy to move a VM instance from one server to another to balance the workload, migrate to faster hardware or to recover from hardware failure.
#5 - Desktop Virtualization
Another virtualization trend is storing a user's OS and apps in a VM in the server and use the PC as a "thin client" to that VM. Each user is isolated from all others, and maintenance is shifted from the user's computer to the datacenter (see thin client
). See virtual machine monitor
, application virtualization
and OS virtualization