Permítanme abordar la parte del "por qué".
Una de las razones para un SO moderno es permitir que múltiples programas (procesos) se ejecuten al mismo tiempo en un sistema. Si desea hacer esto de manera segura, debe suceder lo siguiente:
Probablemente (a menos que tenga necesidades especiales) no quiera dividir la RAM en el sistema de manera fija, por ejemplo, 256 MB fijos por proceso, lo limita a 8 procesos en un sistema de 2 GB. Le gustaría que cada proceso pueda "pedir" memoria y devolverla cuando haya terminado.
Tampoco desea dividir los dispositivos de E / S de manera fija entre los dispositivos. Por lo general, desea que parte o todo el hardware, como la memoria, sea un recurso compartido, o al menos solo temporalmente exclusivo para procesos específicos en momentos específicos. Esto requiere que todos los procesos no intenten hacer E / S por su cuenta, sino que "atraviesen" algo para programar y coordinar las E / S. La programación es importante ya que la mayoría de E / S es mucho más lenta que la CPU, por lo que puede hacer que la CPU trabaje para otros procesos mientras espera E / S incluso en un sistema de un solo núcleo.
Para hacer lo correcto arriba, uno necesita aprovechar varias características de hardware de la CPU. Uno de ellos es la MMU, el otro es el modo protegido. ¿Podrían dos sistemas operativos compartir estas características de hardware de forma cooperativa para ejecutar dos o más sistemas operativos?
Claro, pero no hay nada en el hardware capaz de evitar que un sistema operativo pisotee la memoria de los demás sistemas operativos. Si la CPU está en modo kernel (solo tiene un modo kernel), cualquier código puede hacer cualquier cosa. Es 100% posible que el código de un sistema operativo se ejecute sobre el código o los datos del otro sistema operativo. Y sabemos que los sistemas operativos han tenido vulnerabilidades en el pasado y tendrán más en el futuro. Entonces es muy malo para la seguridad.
Ahora, ¿no sería genial si pudieras poner otra "capa" sobre esto y tener ese soporte de hardware necesario para múltiples sistemas operativos? Eso es exactamente lo que hacen las funciones de virtualización de hardware, ponen una barrera de hardware entre múltiples sistemas operativos en ejecución, y hay una "interfaz" de nivel superior para ellos llamada hipervisor. Solo puede tener un hipervisor. Y sí, los procesos que se ejecutan en cualquiera de los sistemas operativos deben pasar por tres capas para hacer E / S (proceso - núcleo local - hipervisor)