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.
Les machines virtuelles (VM) s'exécutent toujours plus lentement que le système hôte car le système invité doit demander à l'hôte de s'interfacer avec le matériel, comme votre carte graphique, les disques durs, la mémoire, etc., car il s'agit d'un programme exécuté sur le système hôte et n'a pas de contrôle direct sur le matériel. Cependant, si votre matériel peut le gérer, la lenteur peut ne pas être trop perceptible.
La raison en est que le processeur ne peut exécuter qu'une seule instruction à la fois. Les programmes se composent généralement de milliers ou de millions d'instructions machine. Lorsque la machine démarre, elle recherche dans le Master Boot Record (MBR) un chargeur de démarrage. Le chargeur de démarrage démarre alors le noyau. Le noyau est le processus principal qui contrôle tout le matériel. Le multitâche, qui bascule entre plusieurs tâches, nous permet d'exécuter plusieurs programmes à la fois, même si un seul est en cours d'exécution à un moment donné. La plupart des processeurs ne passent qu'environ 20% de leur temps à effectuer des calculs mathématiques. Les processeurs multicœurs permettent de récupérer la prochaine instruction en attendant qu'un autre cœur fasse des calculs, ce qui réduit le temps d'inactivité et accélère considérablement le système. En plus du noyau, il y a le shell (qui fournit une interface aux utilisateurs),
Le logiciel de virtualisation est une application qui, comme toute autre application, est gérée par le noyau. Ainsi, le noyau de la machine virtuelle doit attendre la permisson du noyau hôte pour faire quoi que ce soit et sera fréquemment interrompu. Plus il y a de processus en cours d'exécution sur le système hôte, moins le temps d'exécution sera alloué à la machine virtuelle, ce qui le ralentit. Les machines virtuelles fonctionnent généralement trois à quatre fois plus lentement que les machines physiques.
Si vous allez exécuter des jeux ou quelque chose comme ça, j'allouerais beaucoup de RAM et autant de temps au noyau que possible. Plusieurs processeurs aident. Cependant, allouer trop de RAM ralentira le système, car cela prend plus de temps pour accéder aux données et peut entraîner une mise en cache excessive du disque dur sur le système hôte. Mais d'un autre côté, trop peu entraînera des quantités excessives de mise en cache du disque dur sur l'invité. Étant donné que Windows a tellement faim de ressources, j'allouerais au moins 2 à 4 Go de RAM, mais n'allouez pas plus de la moitié de votre RAM à la machine virtuelle.
S'il répond trop lentement, une meilleure option pourrait être le double démarrage. De cette façon, les deux pourront utiliser pleinement les ressources du système, mais malheureusement, vous ne pouvez en exécuter qu'une à la fois. Si vous faites cela, vous voudrez probablement au moins trois partitions: une pour Linux, une pour Windows et une (ou plus) pour vos fichiers.
la source
Donc. VMWare Player est un hyperviseur de type 2. Cela signifie qu'un invité est assis au-dessus d'un système d'exploitation. Sur un hyperviseur de type 1, la plate-forme de virtualisation se trouve au-dessus du matériel. C'est parce que VMWare Player est sur un hyperviseur de type 2 qu'il fonctionnera plus lentement que quelque chose sur un type 1. Cependant, VMWare Player offre la possibilité de personnaliser vos exigences matérielles pour votre machine virtuelle. Donc, si vous avez un système avec un processeur quadricœur avec 4 Go de RAM, vous pouvez vous permettre d'offrir jusqu'à 1 ou 2 cœurs, puis 2 Go de RAM (minimum requis pour Windows x64) pour avoir une machine virtuelle qui fonctionne efficacement.
Par exemple, j'ai un XPS 14z et j'ai Windows 7 dessus. J'exécute également une machine virtuelle Windows 7 - je lui ai alloué 2 Go de RAM et 2 cœurs de processeur (sur mes 4).
Ainsi, lorsque j'exécute des programmes dessus (Notepad ++, Transwiz, Outlook, Word, Excel, etc.), il n'y a pas de ralentissement notable. Je n'ai jamais essayé d'exécuter un logiciel intense dessus (Photoshop, etc.). Donc, selon l'utilisation que vous en faites - un hyperviseur de type 2 peut ou non répondre à vos besoins. Si vous souhaitez l'utiliser pour les jeux, cela dépendra du jeu. J'ai exécuté quelques jeux Steam dessus et je n'ai eu aucun problème (je RDP de ma machine Fedora à ma VM parfois) mais cela dépendra vraiment des exigences du jeu. Pour les jeux dans tous les sens, je n'utiliserais pas de machine virtuelle pour le faire. Je joue sur ma machine W7, puis j'utilise une machine virtuelle (Fedora, en fait) pour faire d'autres choses. Vous souhaitez que les applications les plus intensives aient un premier accès au matériel.
la source
J'ai donc installé Windows 7 dans Linux Mint 12 via VMWare Player. Le rendu vidéo de Windows 7 dans Linux Mint est pire que Windows 7 en tant que système d'exploitation principal. Je n'ai rien configuré et je ne sais pas s'il y a quelque chose à configurer pour améliorer le rendu vidéo des fichiers avi.
J'ai trouvé que la vitesse d'exécution des applications était rapide dans ma machine à mémoire de 8 Go. Ce n'était pas un problème. Cela dit, je n'ai rien essayé de très gourmand en mémoire comme le montage vidéo ou photo. Juste des applications Office standard.
la source
Le problème avec la technologie VM est qu'elle ne peut pas adresser votre mémoire physique de la même manière si vous exécutiez un OS réel utilisant cette mémoire. Une image de machine virtuelle utilise l'adressage de mémoire logique si elle s'exécute en utilisant le même espace d'adressage physique que vous ne pourrez pas exécuter les deux systèmes d'exploitation en même temps. Bien que les machines virtuelles modernes aient parcouru un long chemin, on pourrait même dire un jeu de qualité à 90% -95%, elles n'ont toujours pas la capacité de faire tourner vos jeux à pleine vitesse. Ces 90% à 95% visent uniquement l'adressage logique contre l'adressage physique de la mémoire de votre ordinateur. Maintenant que cela ne couvre que l'argument d'adressage / allocation de mémoire, l'autre problème est que Windows utilise DirectX pour autant que je sache, aucun logiciel de VM, y compris VMware, ne prend entièrement en charge les derniers DX. Donc, si vous utilisez autre chose que DX 9, vous êtes à peu près foutu.
QEMU sur Linux est probablement le meilleur pour les jeux!
la source