J'ai annexé beaucoup à ma réponse ci-dessous, mais j'ai gardé ma réponse originale intacte pour référence.
TL: DR: Les machines virtuelles sont un outil, et bien qu'elles offrent la possibilité d'utiliser facilement un système d'exploitation dans un autre, vous devez être très conscient de ce que sera votre utilisation principale prévue de l'ordinateur afin d'utiliser pleinement le système. .
Votre question semble être fortement orientée vers les possibilités de performances graphiques et d'interface de l'utilisation d'une machine virtuelle et je répondrai donc en ce qui concerne les possibilités.
Le problème principal est que pour gérer en toute sécurité l'accès des systèmes d'exploitation invités aux appareils (et ainsi empêcher l'OS invité de piétiner l'hôte et de casser des choses), tous les appareils que vous souhaitez utiliser doivent être "émulés".
Cela signifie que la carte graphique que votre système d'exploitation invité peut voir n'est pas la même carte graphique que votre système d'exploitation hôte peut voir. Vous pouvez peut-être activer des fonctionnalités telles que le rendu 3D dans l'invité, mais cela est géré par un pilote intermédiaire dans votre invité qui transmet les demandes à l'hôte de manière sûre afin que la 3D y soit rendue.
Il est très douteux que des fonctionnalités telles que celles nécessaires pour lire des disques Blu-ray en toute sécurité sur un écran HDMI pris en charge soient émulées par les pilotes de carte graphique invités et cela ne fonctionnera donc probablement pas.
Fondamentalement, tout ce qui nécessite une prise en charge matérielle sur votre hôte ne fonctionnera probablement pas bien, voire pas du tout, chez votre invité. Je ne sais pas comment fonctionne WiDi, mais si cela nécessite un accès direct à la mémoire de votre carte vidéo pour la partager avec un téléviseur, cela ne fonctionnera que si vous l'utilisez à partir de votre système d'exploitation hôte (Linux).
En dehors de cela, en termes de performances, une machine virtuelle peut se rapprocher de ce qu'elle serait si elle était le système d'exploitation principal, mais il y aura toujours des pénalités en termes d'accès au périphérique de disque dur ou de conflit avec d'autres ressources que l'hôte utilise.
Au début...
Au début, nous avions un ordinateur, cet ordinateur ne pouvait exécuter qu'un seul système d'exploitation. Ce système d'exploitation avait tendance à bien fonctionner uniquement sur le processeur particulier et les autres matériels qui se trouvaient dans la machine, les autres systèmes d'exploitation ne pouvant fonctionner correctement, voire pas du tout, sur le matériel natif disponible.
Pour que les gens puissent utiliser le logiciel pour une plate-forme particulière sur une autre plate-forme (par exemple, en utilisant le logiciel MacOS pré-OSX sur un Commodore Amiga), il fallait plus que simplement "installer le logiciel". Ces deux machines utilisaient des architectures de processeur et du matériel auxiliaire complètement différents. Il n'y avait tout simplement aucun moyen qu'un OS puisse fonctionner sur le matériel d'une autre machine.
Émulation
L'émulation est comme un cousin de la virtualisation, ils sont en fait liés et ont des objectifs similaires. L'un engendra l'autre pour ainsi dire.
Ce que ces différentes plates-formes matérielles signifiaient, c'est que si vous vouliez utiliser un logiciel d'un autre système d'exploitation sur votre machine, tout ce qui concernait cette machine devait être analysé pour savoir comment cela fonctionnait, puis un morceau de code écrit qui fonctionnait dans le de la même manière que la partie matérielle. Cela devait être fait pour chaque pièce, le processeur, le contrôleur graphique, le contrôleur de mémoire, tout .
Ensuite, toutes ces pièces sont assemblées et comme chaque pièce émule un peu de matériel, nous avons appelé cela une machine émulée . Nous exécutons ensuite un système d'exploitation sur cette machine émulée.
Le problème est que cette approche est lente. Tout simplement, vous avez eu de la chance si vous pouviez atteindre 1/10 de la vitesse du matériel d'origine. Vous aviez littéralement besoin d'une machine plusieurs fois plus rapide que votre machine émulée cible pour exécuter l'ordinateur émulé à un endroit proche de la vitesse maximale.
Alors qu'est-ce qui a changé?
Eh bien, voici la chose cool. Pas grand-chose vraiment. Le seul grand changement a été la standardisation des plates-formes matérielles. Nous avons cessé d'obtenir du matériel personnalisé pour chaque système d'exploitation et les systèmes d'exploitation ont tous migré vers ou ont été créés sur une seule plate-forme standard.
Les composants qui composent un Mac de nos jours sont, dans l'ensemble, les mêmes composants qui composent un PC. Linux fonctionnait toujours sur du matériel PC, donc rien de nouveau là-bas.
Pendant longtemps, l'émulation était toujours la norme si vous vouliez exécuter le logiciel d'un OS sur un autre. Ou vous pouvez double-démarrer et exécuter l'un ou l'autre système d'exploitation comme vous le souhaitez, mais cela rendait la tâche pénible et ennuyeuse si vous vouliez passer du codage sous Linux à des jeux sous Windows.
Puis..
L'idée est venue que le matériel sous-jacent étant le même, pourquoi les deux systèmes d'exploitation ne peuvent-ils pas le partager?
Nous nous sommes retrouvés avec QEMU et WiNE et des solutions logicielles similaires. QEMU était depuis longtemps un favori pour l'émulation matérielle des machines, tandis que WiNE permettait aux applications Windows de s'exécuter sur Linux en interceptant et en corrigeant leurs appels API OS et en laissant le code s'exécuter nativement sur le processeur.
QEMU a fait quelque chose de similaire à WiNE, mais à un niveau bien inférieur. Il s'agit toujours en fait d'un émulateur, mais pour chaque appel matériel effectué, ils ont utilisé une méthode de «correction et redirection» afin que tous les appels soient dirigés vers leur propre plate-forme matérielle émulée. parce que la plupart du code de travail dans un programme n'impliquait pas réellement d'appels matériels (la plupart sont de simples flux de calculs avec un appel à la fin pour afficher les résultats).
Cela a entraîné une augmentation instantanée de la vitesse pour presque tous les programmes de la machine qui n'est plus vraiment émulée . Les programmes fonctionnaient avec des ralentissements qui dépendaient davantage de l'accès à du matériel "virtuel" plutôt que de la capacité d'émulation de la machine. Plutôt que de courir à 1 / 10e de la vitesse, ils roulaient maintenant à presque la même vitesse que s'ils étaient natifs.
Donc, si nous utilisons le processeur maintenant, pourquoi ma carte graphique ne fonctionne-t-elle pas?
Le seul problème avec ces nouvelles machines virtuelles est que, de par leur nature même, un système d'exploitation suppose qu'il a le contrôle direct de tout le matériel qui se trouve sur l'ordinateur, afin de pouvoir fournir des fonctionnalités telles que la gestion de la mémoire et contrôler l'accès au matériel.
Cela signifie cependant que les machines virtuelles ne peuvent pas complètement s'éloigner de l'émulation, du moins dans la méthode. Ils doivent encore émuler certaines fonctions du logiciel, par exemple une carte graphique ou une carte réseau doit être présentée au système d'exploitation fonctionnant dans la machine virtuelle afin que le système d'exploitation "Invité" pense qu'il a le contrôle total de ce matériel. Le système d'exploitation principal (par des exigences de sécurité) doit se prémunir contre les programmes accédant directement au matériel et cela impose des restrictions sur le système d'exploitation invité.
Pour ce faire, ils doivent émuler des éléments matériels «virtuels» pour tout ce qui se trouve sur l'ordinateur. Tout le code est exécuté nativement par le processeur maintenant, donc ce n'est pas lent, mais chacun de ces éléments de matériel virtuel doit être écrit dans le logiciel, ce qui entraîne à la fois une petite pénalité en termes de performances et potentiellement une grande pénalité en termes de fonctionnalité .
Cela signifie que votre carte graphique virtuelle ne peut pas et n'aura pas les mêmes fonctionnalités que votre vraie carte graphique. Afin d'obtenir les meilleures performances, le matériel virtuel peut être écrit pour prendre en charge les fonctionnalités les plus utilisées, et le rendu 3D est désormais possible dans une machine virtuelle, mais ce n'est toujours pas la même chose que le vrai matériel.
Cela signifie que le système d'exploitation hôte obtient les meilleures options matérielles, tandis que le système d'exploitation invité obtient des options matérielles génériques .
Une machine virtuelle n'est pas aussi bonne qu'un vrai matériel, c'est seulement un outil pour faciliter le travail avec les outils d'un système sur un autre.
Alors qu'est-ce que je fais?
Vous devez choisir ce que vous voulez que l'objectif principal de votre ordinateur soit.
Si vous voulez jouer aux derniers jeux sur votre carte graphique haute puissance et utiliser la même puissance de carte graphique pour lire des films 1080p complets sur votre téléviseur HDMI 400 ", mais que vous ne voulez qu'occasionnellement faire de la programmation Linux, alors Windows peut être votre meilleur choix avec Linux en tant qu'invité.
Si vous voulez travailler sur le noyau Linux, créer des pilotes matériels pour les périphériques de votre ordinateur et écrire occasionnellement des logiciels pour Windows et les tester sur une bonne approximation d'un système Windows "standard", il se peut que vous soyez meilleur avec Linux en tant qu'hôte et Windows en tant qu'invité.
Si vous aimez la facilité d'utilisation d'un Mac mais que vous souhaitez programmer pour Windows (ou s'il existe un logiciel que vous souhaitez utiliser uniquement pour Windows), c'est également une option.
Je ne dis pas que Linux ne peut pas jouer à des jeux, ou que MacOS n'est pas pour les programmeurs car ce ne serait qu'un paquet de mensonges. C'est juste que la seule personne qui peut dire quel système d'exploitation peut être le plus adapté à ce que vous voulez faire est vous .
Vous devez vraiment comprendre ce que vous voulez que votre machine fasse en premier . Ce n'est qu'alors que vous pourrez déterminer ce qu'une machine virtuelle peut faire pour vous.
Pour répondre à tes questions:
Will the graphics and video rendering quality will be just as good?
Non. La carte graphique émulée peut fournir certaines fonctionnalités de la carte graphique hôte, mais elle ne prendra probablement pas en charge des fonctionnalités complexes telles que l'accélération vidéo matérielle ou les fonctionnalités de programmation CUDA.
Will there be any hardware issue such as using HDMI or WiDi?
Encore une fois, ces fonctionnalités supplémentaires ne seront probablement pas une fonctionnalité du matériel émulé / virtuel disponible.
Will applications run just as smoothly as long as enough RAM is allocated?
La plupart des applications (tant qu'elles ne nécessitent pas de fonctionnalités matérielles spécifiques) s'exécuteront presque aussi rapidement qu'elles le feraient sur du matériel réel, tant que vous ne mourrez pas de faim ni l'hôte ni l'invité de mémoire.