There is a lot of confusion in this world about what the difference between a virtual machine and an emulated machine is. I personally blame this on two factors:
- Most people don’t really care
- ‘Virtual’ is an overloaded word in the English language
To quickly talk about the second point – you see ‘virtual’ can either be:
- A literal word meaning ‘just like but not quite’ – e.g. ‘I am virtually finished writing this post’
- A technical term that refers to a mechanism for creating multiple contexts on a single processor
So many ‘virtual’ machines in this world are actually emulated ones. Emulation involves providing the functionality of your target processor completely in software. The main advantage of emulation are that you can emulate a processor on any other type of processor. The main disadvantage is that it tends to be slow.
Virtualization on the other hand involves taking a physical processor and partitioning it into multiple contexts – all of which take turns running directly on the processor itself. Virtualization in faster than emulation – but requires that you have the correct physical processor to work.
So why is Ben telling me all this – you may be asking? Well – it is because I quite regularly get asked by people: ‘Can you make Virtual PC emulate a slower processor for the program I want to run?’ – and as you can see – the answer is no. Virtual PC will always have exactly the same type of processor as is in your physical computer – because it uses virtualization.
The other reason – is because in a confusing move ‘Virtual PC 2004’ uses virtualization – while ‘Virtual PC 7 for Macintosh’ uses emulation, and every now and then when I am reading Slashdot and there is some fool saying ‘Virtual PC (for Windows) is slow because it uses emulation’ – and I feel like flaming them to a crisp and saying ‘That is the Mac product! You have obviously never used the Windows product and have no idea what you are talking about!’. But I have not done this yet (have to watch your karma you know).