While reading different materials on different subjects every now and then I come back upon the question: How virtual really is virtualization? With "virtualization" I mean things like Virtual PC and VMWare, which allow you to run an guest OS. In particular, what I don't understand is:
- Does the virtual machine provide an environment which is fundamentally indistinguishable from a physical machine? Of course, there will be some practical differences (like hypervisor call escape hatches, dummy hardware component names, etc.) which allow the detection of a virtual machine, but will there be any incompatibilities?
- If the environment is fully compatible with a physical machine, then are nested virtual machines possible?
- If not, does that mean that the guest OS has to be specifically adapted for running inside a virtual machine? If so, then does that mean that most of today's OS'es have already been adapted for most VM vendors?
- Are these things different for software-based virtualization vs hardware based?
- What exactly is the difference between software-based virtualization and hardware-based?