Virtual PC software, or desktop virtualization, is an end-user implementation of virtual computing in which a desktop application (rather than a server) is used to emulate a PC. The emphasis here is on direct interaction with the virtualized machine as if it were a local PC, rather than simply emulating computing power for the sake of server-based apps.
Some of the common uses for virtual PC software include:
Software testing / sandboxing. A user may want to try out a piece of software in an isolated fashion, to ensure that production systems or data aren’t compromised. Previously, this might have involved setting up a whole separate physical machine to do the testing, or creating a separate instance of an OS on the same machine (accessed via a dual-boot). A virtual machine can run software—a single program, an entire OS, or both—in isolation, so that any activity is confined to the VM.
Virtual appliances. Many server-side applications are available in virtual-appliance versions. These are VM images that include an OS (Linux, typically) and a copy of the application pre-loaded, so the whole thing can be deployed and run by simply booting the VM and connecting to it over the network. WordPress, SugarCRM, Joomla! and Drupal, just to name a few such apps, all exist in virtual-appliance editions.
Backwards compatibility. Some apps written for a current version of an operating system may not work in earlier versions, or vice versa. Running the app in a VM allows it to be run on the exact revision of OS needed. Windows 7’s XP Mode uses this: a full copy of Windows XP runs in a VM, letting you use applications or device drivers that cannot run in Windows 7.
Over the past decade, as the cost of the hardware needed to perform virtualization has dropped, the number of end-used/desktop VM programs has grown. Here are the most common and widely used, with some discussion of their feature sets. (Not included here are server-level virtual-machine subsystems like Xen, which have no direct desktop incarnation.)
first and most widely-recognized VM solution has since spawned a whole
family of incarnations, from server-virtualization systems to a variety
of desktop editions designed for different uses. VMware Player, the
most basic version, does little more than let you create and run
virtual machines, either newly-created ones or pre-packaged VM images,
but for most people it provides enogh functionality to get by.
The higher-end product VMware Workstation adds professional features: 3D graphics, support for more processors (virtual or physical), in-machine debugging for software developers, machine-state snapshots, and so on. Player is free to use; Workstation is US$189 a seat.
(formerly Sun’s) personal VM solution includes much of the
functionality of VMware Workstation, but in a free-to-use
/ open source
implementation that runs on and hosts multiple OSes. It is not quite as
polished as VMware in some respects, but each successive revision has
added functionality (e.g., multicore guests), speed and improved native
compatibility with a wide range of operating systems. It also includes
in its free-to-use version a number of features that aren’t available
in VMware Player, such as snapshotting. Among the add-ons and
extensions available for VirtualBox are a web interface written
in PHP that allow remote control of headless servers.
Virtual PC. Originally a VMware-like app produced by Connectix for both the PC and Mac, it’s since been purchased by Microsoft and no longer exists as a standalone product. Its current incarnation is as an add-on for Windows 7 to power Windows XP Mode, available only to users of Windows 7’s higher-end SKUs (Business and Ultimate).
Parallels. This company is best known for their Mac product Parallels Desktop—one of the most common ways Windows is run in emulation on the Mac—but they also produce Windows and Linux versions of the same program. Its feature set isn’t as sophisticated as VMware or VirtualBox—e.g., it doesn’t support emulation of multiple CPUs.
QEMU/DOSBox/Bochs. A slew of independently-written and open source virtual-machine and machine-emulation apps also exist, although they are mainly used only by experts, tinkerers, or as part of another product. QEMU emulates a whole variety of processor architectures—not just the x86 family but also architectures like ARM, PowerPC and many others. DOSbox is for running legacy DOS apps—typically games, but also business software that was never ported to other platforms. Bochs emulates all the x86 instructions and devices found in a typical PC and is used mainly for debugging new operating systems under development than for running end-user apps.
Using a virtual machine requires that the host PC has enough spare memory and disk space to be used by the virtual machine. If you wanted to create a virtual PC with 1GB of RAM and 200 GB HD space, you’d need at least that much memory and that much storage, free and clear, on the host machine. This was one major reason why it wasn’t until relatively recently that desktop virtualization started becoming more commonplace. Memory and storage are now cheap enough that virtualization is now possible even on a midrange-PC budget.
Virtual PC solutions either require or benefit enormously from hardware-assisted virtualization. This means a user will get the best results by running the virtual PC on certain varieties of processor, which sport instruction sets designed for virtualization. Intel processors that support the VT-x extensions and AMD chips that have AMD-V are two such lines of CPUs. Not every current CPU includes these extensions, so anyone interested in performing virtualization with a given PC should check that the included processor has them.
VMs are designed to run most operating systems without modification. The user can typically boot the installation media and install the OS as if all this were taking place on an actual computer. That said, after the installation is complete, the user can also install a set of tools (essentially a device driver package) that allows better integration between the guest OS and its host.
Such tools are available for Windows and Linux when running in VirtualBox or VMware, and include such functions as two-way clipboard sharing, enhanced graphics (including support for the host’s 3D hardware acceleration features), and more tightly-integrated networking. These add-ons are not vital, since the guest OS will usually run decently well without them, but they enhance day-to-day use of the guest and make certain tasks easier—e.g., network integration between the guest and host for the sake of copying files in or out.