I had a couple of people ask me recently exactly what is Microsoft Hyper-V and how does it compare to the virtualization that’s already out there, like Virtual PC, Virtual Server, and VMWare.

I’m certainly no expert on it, but I’ll share what I think I know. Hyper-V is a Microsoft-branded virtualization implementation that is based on the Hypervisor resource allocation mode. Basically, when applied to virtualization, the goal is to get the Guest OS closer to the underlying hardware so you can improve performance.

Today, the Host runs each Guest in a separate session, and each guest runs in its own little world, mostly unable to access features of the Host. Hypervisor and Hyper-V (MS branding) allows the Guest VMs to call into well-defined services of the host and let the Host handle the requests closer to the bare-metal, thereby increasing performance and improving resource allocation. The Guest OS is now virtualization aware and can do things differently when it is run from within a virtual session rather than on bare-metal.

Why would an OS ever want to do things differently when it is in a VM rather than on bare metal? Well, take the page file for example. When the OS is on bare metal, the OS needs a page file to swap physical memory with disk-based memory. However, when the OS is running within a VM as a guest, the host OS probably already has its own page file. So, why should the guest maintain a separate page file, effectively making the physical hardware do double work? It would be a much more efficient if the guess OS could simply ask the host OS to page memory on the guest OS’s behalf. This would eliminate the double layer of IO that guest machines currently have to go through in order to page memory.

The Wikipedia article here is actually pretty good on the topic:

http://en.wikipedia.org/wiki/Hypervisor