A “Virtual” machine is a program that runs on a computer that emulates another computer. For example, there’s an arcade game emulator called MAME (Multiple Arcade Machine Emulator) that can pretend to act like one of the computers inside a coin operated arcade machine. People have used special hardware to copy the ROM images off the chips in the arcade machines and have made them available for download over the internet. Anyone that downloads one of the ROM image files can load it up in MAME and run the actual coin operated game on their home computer. The game program that’s running in the virtual machine has no idea that it’s NOT running on a real arcade machine. It runs exactly as if it were in the arcade. It even expects you to drop quarters in it.
This game, “Pac-Man Plus” is NOT a PC game and was not written for PC operating systems or for PC hardware. It’s completely incompatible with it. But, as you can see, it’s running on a Windows machine. It’s because of the MAME software which is emulating a completely different machine. The Emulator (or “Virtual Machine”) is looking at the instructions in the game code and interpreting them, one at a time, and figuring out what that game is intending to do on the arcade hardware, and doing is instead doing it the Windows way.
There are many different types of emulators. There are emulators for all the old game consoles like the old Atari 2600, Colecovision, Intellivision, Nintendo, Nintendo 64, GameCube, PlayStation, Sega GameGear handheld, Nintento DS, GameBoy, even emulators for the old Commodore 64 and Apple // and Macintosh (the old 6800 version, the PowerPC version, and now the Intel version with OSX).
But, when you emulate a desktop computer, the term “Virtual Machine” is usually used rather than the term “emulator”, though, they’re both the same thing, technically speaking… They both use a piece of software to emulate another computer.
Today, virtual machine software is fairly common in the business environment for servers. Some popular VM programs are VMWare, Virtual PC, Xen, and Parallels. There are others, but these three are, by far, the most popular. They all emulate a computer. But, they usually emulate a computer that’s similar. In other words, you run these on an Intel based PC (like any Windows machine or any modern Mac or Linux) and the VM software emulates another computer that’s also an Intel based computer. Check out this screen shot of VMWare running under Windows 7, but running Ubuntu Linux 8.10 inside of it:
As you can see, the frame of the VMWare program is clearly a Windows application. Inside the window, you can see a Linux desktop. This is not a remote control session. This version of Linux is actually running at the same time, on the same machine as Windows 7. The Linux that’s running inside that window has no idea that it’s not the primary operating system on the computer. As you can see on the left, I have several different virtual machines that I can run. I can actually run several of them at the same time.
This is a great way to try out different operating systems without having to commit to one or reformat my hard drive to install one. It also lets me test software in a sandbox environment without putting my real computer at risk. Big companies use this type of software to consolidate multiple servers onto fewer machines. They can also crank up a new server in a matter of minutes without having to deploy new hardware. Each virtual machine thinks it’s a whole computer on the network and other computers on the network can talk to these virtual machines as if they actually are whole computers on the network. Each one can get assigned a unique IP address, just like a real computer. As a matter of fact, many web sites you visit are actually hosted inside of virtual machines. Other computers on the network cannot tell that they computer they’re talking to is not a real machine.