The open source Bochs, VMware Workstation by VMware, Inc. and VirtualPC from Connectix are applications that virtualize or emulate the x86 hardware, allowing you to run multiple operating systems on top of a "host" operating system that these three applications run upon. This means that you will be able to run Linux or FreeBSD or other supported "guest" OSes under Windows, Linux (or Macintosh), inside a window or fullscreen. But which one delivers the best performance for the money? And what about the free Bochs?

Runtime Vs Emulation

First off, we need to clear out an issue that many people are confused about or just do not fully understand. VMware Workstation & VirtualPC are not emulators as Bochs is. They deliver the same output, but the way they work is different.

Bochs emulates the x86 hardware and some of its peripherals, which makes it able to be easily portable among a number of platforms & architectures. Its emulation is also the reason that it is many times slower than both VirtualPC and VMware Workstation.

Technically speaking, VirtualPC is somewhere in the middle of VMware Workstation and Bochs. Some large parts of VirtualPC 4.03 for x86 are emulated, while other parts are virtualized. VirtualPC 5 under Macintosh is quite different from its x86 counterpart, as it is 100% emulator, as with Bochs.

VMware Workstation only emulates certain I/O functions and the rest is all executed through its x86 runtime engine. What that means is that when the guest OS is requesting a certain instruction or action to be executed, instead of trying to re-invent the wheel and emulate them, VMware Workstation will try to "pass" the request to your actual hardware and ask it to execute it instead. For example, the VMware Workstation display driver or the 24-bit VESA on VMware Workstation will "pass through" its execution requirements to your real graphics card, instead of trying to emulate.

VMware Workstation buys speed with its runtime engine, while Bochs and VirtualPC buys portability. It is a trade-off game.

Overview

So who should use VMware Workstation and VirtualPC and most importantly, who really needs them? Many people were not happy with the price bumping VMware Workstation introduced last year for version 3.0. However, these users do not understand that these two applications (especially VMware Workstation) are not intended for end-users who most of the time are trying to kill time installing operating systems or simply acting geekish (as in my case ;).

VMware Workstation is targetting the enterprise and large software houses. For example, Microsoft or Red Hat could be big customers for VMware Workstation because they are able to test and develop their operating systems with it. This comes in handy, especially if you need to test internationalization of the product. Instead of spending hours installing 50 OSes where their only difference is the language, a virtual machine can greatly help and accelerate development or testing.

VirtualPC is closer to the end-user. The bumped up UI, the fewer debugging or advanced options, and the shorter guest OS support list, plus the whole direction of the company reveals that they equally care for the end-user and the larger corporations.

VMware Workstation can run on Windows 2000/XP and on Linux. VirtualPC runs on Windows 9x/ME and with different binaries also runs under NT/2k/XP, OS/2 and MacOS 9/X. Bochs runs under many additional platforms, including *BSD and BeOS.

When it comes to the "guest" OSes list, VMware Workstation wins hands down, by providing support for more Linux and FreeBSD versions. However, VirtualPC has another (geek) feature: It plays nicer with non-supported operating systems. For example, OpenSTEP runs (slowly, but runs), BeOS runs (as long you initialize its VESA while in fullscreen with VPC). Bochs only supports some specific versions of operating systems, and it is very unstable when it runs in VESA or VGA mode.

Installation

The Bochs package is only 2 MB, while both VirtualPC and VMware Workstation's packages are a bit less than 20 MB. The commercial packages come in an easy to use installation wizard, while Bochs is distributed in a .zip file, and requires manual, painful tweaking of the configuration file before use. Bochs is not for everyone, as users must know a bit about their hardware.

VPC and VMware Workstation will also install network drivers on your host OS, in order to allow the guest OSes to access networks and/or the Internet. I had trouble with VMware Workstation because the AMD networking card it emulated did not work on Red Hat out of the box. I had to get down dirty with the command line and bring the device "up" manually (the GUI Gnome networking tools did not work either). VirtualPC worked fine in this regard with Red Hat Linux 7.2 as the guest OS.

I did not like the way VirtualPC handles the CD-ROM and the floppy. You need to constantly, manually handle these peripherals by "grabbing" and "releasing" them. For example, I inserted the first installation CD and went for dinner. When I came back and inserted the second CD as per instruction of the Red Hat's Anaconda installation, the virtual machine could not "see" the CD. A new user would be extremely confused why the CD is not visible under the virtual machine, while the previous CD was. The trick is to grab again the CD-Rom (or floppy) device from the VPC menu and then Virtual PC would publish the device insider the virtual machine. The problem is that it is a bad interface and it is extra work for the user, especially if you have to deal with lots of floppy disks or CDs. VMware Workstation will constantly use and publish the floppy/CD as long you have requested to do so in the Guest OS settings window but also provides the option to release them on request.