He adjuntado mucho a mi respuesta a continuación, pero he mantenido mi respuesta original intacta para referencia.
TL: DR: las máquinas virtuales son una herramienta, y si bien ofrecen la capacidad fácil de usar un sistema operativo dentro de otro, debe ser muy consciente de cuál será su uso principal previsto de la computadora para hacer un uso completo del sistema .
Su pregunta parece estar fuertemente inclinada hacia las posibilidades gráficas y de rendimiento de la interfaz de usar una máquina virtual, por lo que responderé sobre las posibilidades allí.
El principal problema es que para administrar de manera segura el acceso de los sistemas operativos invitados a los dispositivos (y así evitar que el sistema operativo invitado pisotee el host y rompa las cosas) todos los dispositivos que desea usar deben "emularse".
Lo que esto significa es que la tarjeta gráfica que puede ver su sistema operativo invitado no es la misma tarjeta gráfica que su sistema operativo host puede ver. Es posible que pueda habilitar funciones como la representación 3D en el invitado, pero esto lo maneja un controlador intermedio en su invitado que pasa las solicitudes al host de manera segura para que el 3D se procese allí.
Es muy dudoso que las características como las necesarias para reproducir discos de rayos azules de forma segura en una pantalla HDMI compatible sean emuladas por los controladores de la tarjeta gráfica invitada, por lo que es probable que esto no funcione.
Básicamente, cualquier cosa que requiera soporte de hardware en su host probablemente no funcione bien, si es que lo hace, en su invitado. No sé cómo funciona WiDi, pero si requiere acceso directo a la memoria de su tarjeta de video para compartirla en un televisor, entonces no funcionará a menos que lo use desde su sistema operativo host (Linux).
Aparte de eso en términos de rendimiento, una VM puede acercarse a lo que sería si fuera el sistema operativo principal, pero siempre habrá sanciones en términos de acceso al dispositivo del disco duro o contención con otros recursos que el host está utilizando.
Al principio...
Al principio teníamos una computadora, esa computadora solo podía ejecutar un sistema operativo. Ese sistema operativo tendía a funcionar bien solo en el procesador particular y otro hardware que estaba en la máquina, y otros sistemas operativos solo podían funcionar mal, si es que lo tenían, en el hardware nativo disponible.
Para que las personas pudieran usar el software para una plataforma en particular en otra plataforma (por ejemplo, usar el software Pre-OSX MacOS en un Commodore Amiga) se requería más que simplemente "instalar el software". Estas dos máquinas utilizaron arquitecturas de procesador y hardware auxiliar completamente diferentes. Simplemente no había forma de que un sistema operativo pudiera ejecutarse en el hardware de otra máquina.
Emulación
La emulación es como un primo de la virtualización, en realidad están relacionados y tienen objetivos similares. Uno engendró al otro por así decirlo.
Lo que significaban estas diferentes plataformas de hardware era que si deseaba usar una pieza de software de otro sistema operativo en su máquina, entonces todo lo relacionado con esa máquina tenía que analizarse para averiguar cómo funcionaba, y luego escribir una pieza de código que funcionara en el de la misma manera que lo hizo la parte de hardware. Esto tenía que hacerse para cada pieza, el procesador, el controlador de gráficos, el controlador de memoria, todo .
Luego, todas estas piezas se unen y como cada pieza está emulando un poco de hardware, llamamos a esto una máquina emulada . Luego ejecutamos un sistema operativo en la parte superior de esta máquina emulada.
El problema es que este enfoque es lento. Simplemente tuvo la suerte de poder alcanzar 1/10 de la velocidad del hardware original. Literalmente, necesitaba una máquina varias veces más rápida que su máquina emulada de destino para ejecutar la computadora emulada a cualquier velocidad cercana.
Entonces, ¿qué cambió?
Bueno, aquí está lo bueno. No mucho realmente. El único gran cambio fue que las plataformas de hardware se estandarizaron. Dejamos de obtener hardware personalizado para cada sistema operativo y todos los sistemas operativos se trasladaron o se crearon en una única plataforma estándar.
Los componentes que componen una Mac en estos días son, en general, los mismos componentes que componen una PC. Linux siempre se ejecutó en hardware de PC, así que no hay nada nuevo allí.
Durante un buen tiempo, la emulación seguía siendo la norma si deseaba ejecutar el software de un sistema operativo en otro. O bien, puede iniciar dos veces y ejecutar cualquiera de los sistemas operativos que desee, pero esto hizo que fuera doloroso y molesto si quisiera pasar de la codificación en Linux a jugar en Windows.
Y entonces..
Llegó la idea de que, dado que el hardware subyacente es el mismo, ¿por qué no pueden compartirlo ambos SO?
Terminamos con QEMU y WiNE y soluciones de software similares. QEMU había sido durante mucho tiempo un favorito para la emulación dura de máquinas, mientras que WiNE permitía que las aplicaciones de Windows se ejecutaran en Linux al atrapar y parchar sus llamadas a la API del sistema operativo y dejar que el código se ejecutara de forma nativa en el procesador.
QEMU hizo algo similar a WiNE, pero lo hizo a un nivel mucho más bajo. Todavía es efectivamente un emulador, pero para cada llamada de hardware que se realizó, utilizaron un método de "parche y redireccionamiento" para que las llamadas fueran a su propia plataforma de hardware emulada. porque la mayoría del código de trabajo en un programa en realidad no involucraba llamadas de hardware (la mayoría son flujos simples de cálculos con una llamada al final para mostrar los resultados).
Esto dio como resultado un aumento de velocidad instantáneo para casi todos los programas en la máquina ahora no realmente emulada . Los programas se ejecutaron con ralentizaciones que dependían más de cuánto accedían al hardware "virtual" en lugar de qué tan bien se podía emular la máquina. En lugar de correr a 1/10 de la velocidad, ahora corrían casi a la misma velocidad que si fueran nativos.
Entonces, si estamos ejecutando el procesador ahora, ¿por qué no funciona mi tarjeta gráfica?
El único problema con estas nuevas máquinas virtuales es que, por su propia naturaleza, un sistema operativo supone que tiene control directo de todo el hardware que está en la computadora, de modo que puedan proporcionar funciones como la administración de memoria y controlar el acceso al hardware.
Sin embargo, lo que esto significa es que las máquinas virtuales no pueden alejarse completamente de la emulación, al menos en el método. Todavía tienen que emular ciertas funciones en el software, por ejemplo, una tarjeta gráfica o una tarjeta de red debe presentarse al sistema operativo que se ejecuta en la máquina virtual para que el sistema operativo "Invitado" piense que tiene el control total de ese hardware. El sistema operativo principal (por requisitos de seguridad) debe protegerse contra los programas que acceden directamente al hardware y esto impone restricciones en el sistema operativo invitado.
Para hacer esto, tienen que emular piezas de hardware "virtuales" para todo en la computadora. El procesador ejecuta todo el código de forma nativa ahora, por lo que no es lento, pero cada una de esas piezas de hardware virtual debe estar escrito en software, y esto incurre en una pequeña penalización en el rendimiento y potencialmente una gran penalización en términos de funcionalidad .
Lo que eso significa es que su tarjeta gráfica virtual no puede y no tendrá las mismas características que su tarjeta gráfica real . Para obtener el máximo rendimiento, el hardware virtual se puede escribir para admitir las funciones más utilizadas, y la representación 3D ahora es posible en una máquina virtual, pero todavía no es lo mismo que el hardware real.
Lo que esto significa es que el sistema operativo host obtiene las mejores opciones de hardware, mientras que el sistema operativo invitado obtiene opciones genéricas de hardware.
Una máquina virtual no es tan buena como el hardware real, es solo una herramienta para facilitar el trabajo con las herramientas de un sistema a otro.
¿Entonces qué hago?
Debe elegir cuál quiere que sea el objetivo principal de su computadora.
Si desea jugar los últimos juegos en su tarjeta gráfica de alta potencia y usar la misma potencia de las tarjetas gráficas para reproducir películas completas de 1080p en su televisor HDMI de 400 ", pero solo ocasionalmente desea realizar alguna programación de Linux, entonces Windows puede ser su mejor opción con Linux como invitado.
Si desea trabajar en el kernel de Linux, hacer controladores de hardware para dispositivos en su computadora, y ocasionalmente escribir algún software para Windows y probarlo en una buena aproximación de un sistema Windows "estándar", entonces puede ser que sea mejor con Linux como host y Windows como invitado.
Si le gusta la facilidad de uso de una Mac pero quiere programar para Windows (o si desea un paquete de software que sea solo para Windows), esa también es una opción.
No estoy diciendo que Linux no pueda jugar juegos, o que MacOS no sea para programadores, ya que eso sería simplemente un montón de mentiras. Es solo que la persona que puede decir qué sistema operativo puede ser más adecuado para lo que desea hacer es usted .
Realmente tienes que entender lo que quieres que haga tu máquina primero . Solo entonces podrá averiguar lo que una máquina virtual puede hacer por usted.
Para responder tu pregunta:
Will the graphics and video rendering quality will be just as good?
No. La tarjeta gráfica emulada puede proporcionar algunas características de la tarjeta gráfica host, pero probablemente no admitirá características complejas como la aceleración de video por hardware o las características de programación CUDA.
Will there be any hardware issue such as using HDMI or WiDi?
Una vez más, estas características adicionales probablemente no serán una característica de cualquier hardware emulado / virtual que esté disponible.
Will applications run just as smoothly as long as enough RAM is allocated?
La mayoría de las aplicaciones (siempre y cuando no requieran características de hardware específicas) se ejecutarán casi tan rápido como lo harían en hardware real, siempre y cuando no se pierda el host o el invitado de memoria.