Comment by mey
8 years ago
Yes. Other virtualization solutions in Windows (virtualbox) run in it userland, hyper-v actually boots up below your windows system and makes your desktop os a virtual machine. Other VM run side by side your desktop os. The limitation being going turtles all the way down isn't supported by CPUs. Making the waters even more complicated is that some software moved from virtual box to hyper-v (docker for windows)
This is not true, the NT kernel itself is the hypervisor.
both of you are correct:
on init, the Hyper-V driver hijacks the running Windows instance, schedules it as the 'root partition', and runs it like just another VM.
unlike 'child partitions', the root partition still has non-virtualized drivers, which run unimpeded by privileged instruction traps.
when a child partition (guest VM) is started, it's scheduled as a peer to the root. its Virtual Processors (VPs) run alongside the root partition's VPs.
when the child partition traps into the hypervisor, or uses one of the enlightened drivers, the hypervisor dispatches a bus request to the root partition, which handles the IRQ using a Virtual Service Provider implemented by the host Windows kernel.
so the hypervisor is kind of a bridge between the host Windows and the child VMs, but the host Windows actually runs as a sort of privileged VM itself, just one with full hardware access and scheduling priority.
* I work for MS, but not on any of these things.
Thank you for elegantly explaining what my quick riff did not.
Hyper-V uses a type 1 hypervisor, which sits below the NT kernel. You might be thinking about the Windows Subsystem for Linux, which does sit on top of the NT kernel.
Disclosure: work at Microsoft on the Hyper-V team.