Performance Comparison – Dual-Virtualization vs. Dual-Boot vs. Single-Virtualization

multi-bootperformancevirtualization

A friend of mine recently suggested something that intrigued me: in the case of needing multiple Operating Systems simultaneously, instead of dual-booting or using multiple computers, one could use a low-level host that consumed effectively zero resources that would host two virtual systems. You'd have the benefit of splitting the computer's resources evenly between the systems and the option of using only one system at a time. As an example:

Dual Boot:

    Computer
       |
    --------
    |      |
Windows  Linux

Single-Virtualization:

    Computer
       |
     Linux
       |      
    Windows

Dual-Virtualization:

    Computer
       |
      Host
       |
    --------
    |      |
Windows  Linux

The problem with dual-boot is you can only use one Operating System at a time, and the problem with single-virtulization is you can't use Windows unless Linux is on.

This dual-virtulization idea seems to solve the problem, but I wonder why I've never heard of it before.

Are there any serious drawbacks to this idea? What are the pros and cons?

The only real disadvantage I could think of was performance, which might sometimes matter, but as an example: my next laptop will support 16 GB of RAM, so each system could get a little less than 8 GB of RAM – more than enough.

Best Answer

The problem is your "host" is far from one that would consume zero resources, and is essentially an operating system itself. You would be better off installing a small distribution of Linux, essentially acting as a "host operating system", and running both of your required operating systems at once.

The problem with a discrete OS host is management of resources.

Who decides what OS gets what piece of hardware at what time? Who manages OS priority? Who manages who gets what part of memory in the address space? Who's responsible for managing CPU usage between OSs? How do you handle storage device read/write synchronization between OSs?

The only truly way to do it is to do something like this:

    Computer
       |
  Linux/Windows
       |
    --------
    |      |
Windows  Linux

Although if you go that far, it's better to simply use the host operating system as opposed to virtualizing itself (i.e. if you use a Windows host, virtualize Linux, and vice-versa).

Related Question