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.
Las máquinas virtuales (VM) siempre se ejecutan más lentamente que el sistema host porque el sistema invitado tiene que solicitar que el host interactúe con el hardware, como su tarjeta gráfica, discos duros, memoria, etc. porque es un programa que se ejecuta en el sistema host y no tiene control directo del hardware. Sin embargo, si su hardware puede manejarlo, la lentitud puede no ser demasiado notable.
La razón de esto es que el procesador solo puede ejecutar una instrucción a la vez. Los programas generalmente consisten en miles o millones de instrucciones de máquina. Cuando la máquina se inicia, escanea el Registro de arranque maestro (MBR) en busca de un gestor de arranque. El gestor de arranque luego inicia el núcleo. El núcleo es el proceso principal que controla todo el hardware. La multitarea, que cambia entre varias tareas, nos permite ejecutar más de un programa a la vez, aunque solo se ejecute uno en un momento dado. La mayoría de los procesadores dedican solo alrededor del 20% de su tiempo a realizar cálculos matemáticos. Los procesadores multinúcleo permiten obtener la siguiente instrucción mientras esperan que otro núcleo haga las matemáticas, reduciendo el tiempo de inactividad y acelerando significativamente el sistema. Además del núcleo, existe el shell (que proporciona una interfaz para los usuarios),
El software de virtualización es una aplicación que, como cualquier otra aplicación, es administrada por el núcleo. Por lo tanto, el kernel de la VM debe esperar a que permisson del kernel del host haga algo y se interrumpirá con frecuencia. Cuantos más procesos se ejecuten en el sistema host, menos tiempo de ejecución se asignará a VM, lo que lo hace más lento. Las máquinas virtuales generalmente funcionan entre tres y cuatro veces más lento que las máquinas físicas.
Si vas a ejecutar juegos o algo así, asignaría mucha RAM y el mayor tiempo posible al kernel. Múltiples procesadores ayudan. Sin embargo, la asignación de demasiada RAM ralentizará el sistema, ya que lleva más tiempo acceder a los datos y puede causar un almacenamiento en caché excesivo del disco duro en el sistema host. Pero, por otro lado, muy poco causará cantidades excesivas de almacenamiento en caché del disco duro en el invitado. Como Windows tiene tanta hambre de recursos, asignaría al menos 2 a 4 GB de RAM, pero no asigne más de la mitad de su RAM a la VM.
Si responde demasiado lento, una mejor opción podría ser el arranque dual. De esta manera, ambos podrán utilizar completamente los recursos del sistema, pero desafortunadamente solo puede ejecutar uno a la vez. Si hace esto, probablemente querrá al menos tres particiones: una para Linux, una para Windows y una (o más) para sus archivos.
fuente
Entonces. VMWare Player es un hipervisor de tipo 2. Eso significa que un invitado se sienta encima de un sistema operativo. En un hipervisor tipo 1, la plataforma de virtualización se encuentra por encima del hardware. Debido a que VMWare Player está en un hipervisor tipo 2, funcionará más lentamente que algo en un tipo 1. Sin embargo, VMWare Player ofrece la capacidad de personalizar los requisitos de hardware para su VM. Entonces, si tiene un sistema con un procesador de cuatro núcleos con 4 GB de RAM, puede permitirse el lujo de ofrecer hasta 1 o 2 núcleos y luego 2 GB de RAM (requisitos mínimos para Windows x64) para tener una VM que funcione de manera eficiente.
Por ejemplo, tengo un XPS 14z y tengo Windows 7 en él. También ejecuto una máquina virtual Windows 7: le he asignado 2 GB de RAM y 2 núcleos de procesador (de mis 4).
Entonces, cuando ejecuto programas en él (Notepad ++, Transwiz, Outlook, Word, Excel, etc.) no hay una desaceleración notable. Nunca he tratado de ejecutar un software intenso en él (Photoshop, etc.). Entonces, dependiendo de para qué lo esté utilizando, un hipervisor tipo 2 puede o no satisfacer sus necesidades. Si quieres usarlo para jugar, dependerá del juego. He ejecutado algunos juegos de Steam en él y no he tenido ningún problema (algunas veces realizo un RDP desde mi máquina Fedora hasta mi VM), pero realmente dependerá de los requisitos del juego. Para los juegos en todos los sentidos, no usaría una VM para hacerlo. Juego en mi máquina W7 y luego uso una VM (Fedora, en realidad) para hacer otras cosas. Desea que las aplicaciones más intensivas tengan primer acceso al hardware.
fuente
Así que instalé Windows 7 en Linux Mint 12 a través de VMWare Player. La representación de video de Windows 7 dentro de Linux Mint es peor que Windows 7 como sistema operativo principal. No he configurado nada y no sé si hay algo que configurar para mejorar la representación de video de los archivos avi.
Encontré que la velocidad de ejecución de aplicaciones es rápida en mi máquina de memoria de 8GB. Eso no fue un problema. Dicho esto, no probé nada con mucha memoria como la edición de videos o fotos. Solo aplicaciones de Office normales.
fuente
El problema con la tecnología VM es que no puede abordar su memoria física de la misma manera si estuviera ejecutando un sistema operativo real usando dicha memoria. Una imagen de máquina virtual usa direccionamiento de memoria lógica si se ejecuta utilizando el mismo espacio de direccionamiento físico que no podría ejecutar ambos sistemas operativos al mismo tiempo. Aunque las máquinas virtuales modernas han recorrido un largo camino, incluso se podría decir que el 90% -95% de los juegos de calidad, todavía carecen de la capacidad de ejecutar sus juegos a toda velocidad. Ese 90% -95% está dirigido exclusivamente al direccionamiento lógico frente al direccionamiento físico de la memoria de su computadora. Ahora que solo cubre el argumento de asignación / direccionamiento de memoria, el otro problema es que Windows usa DirectX, hasta donde yo sé, ningún software de VM, incluido VMware, tiene soporte completo para cualquiera de los últimos DX. Entonces, si usa algo más allá de DX 9, está bastante jodido.
¡QEMU en Linux es probablemente el mejor para juegos!
fuente