VMware is adamant about their definition of virtualization. In fact, I’ve been told that you could do poorly on their VCP-310 exam if you think that virtualization and emulation are the same thing. Are they right? Is there a difference betwen emulation and virtualization? Is virtualization better? I’ll give my two cents worth in this post.
Personally, I use the terms virtualize and emulate interchangeably. I do not see a difference – at least not a difference that favors virtualization as if it were better than emulation. In fact, I would suggest that – if anything – emulation does more than virtualization.
The "emulation scene" is a varied subculture on the Internet that provides software-based emulation of historic and modern devices. For example, you can download Commodore 64 emulators and Apple II emulators. These applications emulate, or virtualize, the hardware of the specified devices. No one would say that a Commodore 64 emulator does not perform emulation and, likewise, no one would say that the emulators do not result in a virtual Commodore 64 (My PC doesn’t literally become a Commodore 64 when I run the software does it? That would be very cool!).
However, the brilliant folks at VMware (and I do mean it as their technology is exceptional in the industry) seem to have a problem with the word emulation. I contend that they are wrong and are making an unneeded distinction that removes a simple analogy from the educational process. When you show someone a Commodore 64 emulator and then say, "We can emulate a modern computer too. That’s what virtualization does." they get it. They understand virtualization instantly and they understand it right.
My point is very well illustrated in Elias N. Khnaser’s book "VCP VMware Certified Professional". He says:
A common mistake that people not familiar with virtualization make is that they think virtualization is similar to emulation or simulation. The fact of the matter is virtualization is neither emulation or simulation, because with virtualization you install the actual operating system on virtual hardware. You go through the same steps, and the operating system itself does not know that it is being installed on virtualized hardware. Furthermore, virtualization requires no custom development or programming of any sort, whereas simulation and emulation do.
Apart from the interesting question that now haunts me – does the operating system know when I am installing it on physical hardware – there are some real problems with the thinking that lead to this paragraph. Before I point the errors out, however, let me say that this book is a great overview of the VMware product line. I find no technical fault at all in the book and think it is a five star book all the way.
Problem one: "with virtualization you install the actual operating system on virtual hardware."
Emulators actually include the operating system when they emulate older computers because those computers came with the operating system in ROM. The Commodore 64, TRS-80, Apple II and more, all include the OS in the hardware. Therefore, one could argue that the emulators that virtualize these computers are doing more than modern virtualization, if you do not consider the other hardware that is emulated (oops, I mean virtualized) by modern PC emulators (I mean virtualizers).
Problem two: "the operating system itself does not know that it is being installed on virtualized hardware."
When you run a Commodore 64 game on an emulator, that game doesn’t know it’s running on virtualized hardware and emulated software. The game thinks it is talking to the Sound Interface Device (SID) chip, but it’s not. The chip is virtualized.
Problem three: "virtualization requires no custom development or programming of any sort, whereas simulation and emulation do"
I take no issue with concerns over the word simulation as it is different than emulation or virtualization – you simulate scenarios and you emulate things. However, to suggest that emulation requires custom development is simply untrue. You can run an old Apple II game on an Apple II emulator without writing a single line of code. There is no difference.
To be clear, these are the only arguments mentioned in the book. They are indeed stated with force, but they are not themselves forceful as they paint a picture of emulation that is at best foggy and at worst simply misguided. Why does VMware (and even Microsoft to some extent) dislike the term emulation? Maybe because free applications that people developed in their basements have been doing it for way more than a decade.
In the end, there can be no question. A Commodore 64 emulator is a virtualization solution. The same is true for all software programs that emulate a piece of hardware. This includes calculators, gaming consoles and old computers. The legality of these programs may be another question, but that they are soundly in the virtualization category is not at all questionable to me.