What is a Virtual Machine?

So, along with the idea of having regular features, I know that I want one of these regular features to be an explanation of one computing concept or another. Maybe titled What Wednesdays, following the template set forth by Mark in the comments of one of my earlier posts. Anyway, today I’m going to take a stab at something that has risen in popularity in both power-user and mainstream user groups: virtual machines.

The term “virtual machine” may sound confusing or may not evoke any type of mental picture at all. But my hope is that by the end of this blog post, you’ll have a clear understanding of the meaning of the term – and why they are such a popular innovation in modern computing. More after the jump!

What is a Machine?

This may sound completely ridiculous, but to even begin understanding virtual machines, we must first understand machines. What is a machine? Well, for the purposes of this computer-oriented discussion, a machine is some hardware (physical components and circuitry) that is designed the process and allow a user to interact with some software (e.g. Microsoft Word). So, using this definition we can clearly see that the physical components you are using to view this web page on your computer make up a machine. What you may not know is that there are a lot of other devices you see in your daily life that also meet this definition. Graphing Calculators are machines, for example (and are quite often more complex than people give them credit for).

So, if we accept this definition of machine it should go without saying (because it’s common knowledge) that not all machines are created equal. Some computers run faster than others, or can store more memory than others. However, these days the limiting factor to being able to run the software you want to run will rarely be what type of machine you have. Rather, more often than not, it will be a matter of whether the piece of software you want to run can in fact run with your Operating System (e.g. Windows, Mac), which serves as the intermediary between your machine and your applications like Microsoft Word.

I am a Website Developer. So, the question that most often poses this problem for me is when a client asks: “Does this work in Microsoft Internet Explorer?” Well, I’m a Mac user, and I can’t get a current version of Internet Explorer for Mac. They haven’t released a new version in several years, so testing with that version would hardly be representative of how things work in Internet Explorer today. Also, I can’t very well go back to my client and say, “Sorry, I’m running a Mac… I can’t test that because my Operating System doesn’t let me.” And it is also true that I’m not going to get rid of my current Operating System to do one test that’s going to take a matter of minutes, and I’d also like to avoid buying a PC exclusively for the purpose of running Windows.

If only there were some way to run a different Operating System side-by-side with or on top of my Operating System.

The Machine Goes Virtual

Awhile back, some clever people figured out that this was, in fact, possible using a concept that we in the Computer Science world call a system virtual machine that essentially tricks an Operating System like Windows into believing that it is running on a real computer independent of any other supporting software. To illustrate, let us take a very simplistic view of how a computer is organized in terms of what depends on what:

So, I think it is a pretty safe statement to make that every system is organized like this on a large scale. Of course, there are a lot of elements in here I’ve omitted, as this is supposed to be more of a broad strokes outline than anything else. But every Operating System and Application pretty much expects this kind of arrangement.

The magic of the Virtual Machine is that it lies.

See, whenever an Operating System is starting up, the first thing that it tries to do is learn about its environment. The Virtual Machine lies to it when it reports the information about the Operating System’s environment, and essentially tricks an Operating System to believe it is running on a computer where it is the sole Operating System. The Operating System that is being lied to, or virtualized, is called the guest operating system. Likewise, the Operating System that is really in charge of working with the hardware on the physical computer is called the host operating system.

The end result of this little ruse is that you can do something like run Windows and Mac OS X side-by-side.

Virtual Machines Today

[![](http://static.squarespace.com/static/507ba2f9c4aa45dec4f03316/507ba4cee4b044d779f49a4b/507ba4d3e4b044d779f49acb/1282763546000/?format=original "VMWare Fusion Running Ubuntu 10.04")](http://static.squarespace.com/static/507ba2f9c4aa45dec4f03316/507ba4cee4b044d779f49a4b/507ba4d3e4b044d779f49acb/1282763546000/?format=original)
A screenshot of VMWare Fusion on my computer running a Guest Operating System, Ubuntu Linux.
Virtual Machines soared in popularity when Apple came out with their line of MacBooks. MacBooks were the first Apple product to use Intel Processors in them. Many people, myself included, invested in purchasing Virtual Machines when we made the switch to Mac because there were still a few programs that ran only in Windows. So, instead of maintaing two computers, we utilized Virtual Machine technology to run Windows as a guest operating system only when we needed it. It turns out that it worked pretty well.

Virtual Machines exist in all arenas in the technology industry, and they’re always growing in popularity. Keep in mind, these are not the only type of virtual machines out there either. There are some that are specialized toward one specific purpose, like the Java Virtual Machine. Anytime you run an application written in Java, a Java Virtual Machine starts and runs the application completely transparently. There have also been rumors that the next version of Windows will be using Virtual Machine technology to help make systems more secure, but how that works is slightly outside the scope of this article.

Conclusion

Sorry if this article seems like it was a little rushed, because it was. But, nonetheless, I hope that you have gained something from my discourse into the concept of the Virtual Machine. As always, leave me some comment love below. Questions are always welcome.

Have an excellent Wednesday evening everyone!