Ich habe viel an meine Antwort unten angehängt, aber ich habe meine ursprüngliche Antwort als Referenz intakt gehalten.
TL: DR: Virtuelle Maschinen sind ein Werkzeug, und obwohl sie die einfache Möglichkeit bieten, ein Betriebssystem in einem anderen zu verwenden, müssen Sie sich genau darüber im Klaren sein, wie Sie den Computer in erster Linie verwenden möchten, um das System vollständig nutzen zu können .
Ihre Frage scheint stark auf die grafischen und Schnittstellenleistungsmöglichkeiten einer virtuellen Maschine ausgerichtet zu sein, und deshalb werde ich auf die dortigen Möglichkeiten antworten.
Das Hauptproblem besteht darin, dass alle Geräte, die Sie verwenden möchten, "emuliert" werden müssen, um den Zugriff auf Geräte des Gastbetriebssystems sicher zu verwalten (und somit zu verhindern, dass das Gastbetriebssystem über den Host trampelt und Dinge kaputt macht).
Dies bedeutet, dass die Grafikkarte, die Ihr Gastbetriebssystem sehen kann, nicht dieselbe Grafikkarte ist, die Ihr Hostbetriebssystem sehen kann. Möglicherweise können Sie Funktionen wie das 3D-Rendering im Gast aktivieren. Dies wird jedoch von einem Zwischentreiber in Ihrem Gast ausgeführt, der die Anforderungen auf sichere Weise an den Host weiterleitet, damit das 3D dort gerendert werden kann.
Es ist sehr zweifelhaft, dass Funktionen wie die, die zum sicheren Abspielen von Blue-Ray-Discs auf einem unterstützten HDMI-Display erforderlich sind, von den Gastgrafikkartentreibern emuliert werden. Dies funktioniert daher wahrscheinlich nicht.
Grundsätzlich funktioniert alles, was Hardware-Unterstützung auf Ihrem Host erfordert, bei Ihrem Gast wahrscheinlich nicht oder nicht gut. Ich weiß nicht, wie WiDi funktioniert, aber wenn es direkten Zugriff auf Ihren Grafikkartenspeicher erfordert, um ihn für einen Fernseher freizugeben, funktioniert es nur, wenn Sie es von Ihrem Host-Betriebssystem (Linux) verwenden.
Abgesehen von der Leistung kann eine VM dem nahe kommen, was es wäre, wenn es das Hauptbetriebssystem wäre. Es gibt jedoch immer Nachteile hinsichtlich des Zugriffs auf das Festplattengerät oder des Konflikts mit anderen Ressourcen, die der Host verwendet.
Am Anfang...
Am Anfang hatten wir einen Computer, auf dem nur ein Betriebssystem ausgeführt werden konnte. Dieses Betriebssystem lief in der Regel nur auf dem jeweiligen Prozessor und der anderen Hardware auf dem Computer einwandfrei, während andere Betriebssysteme auf der verfügbaren nativen Hardware nur schlecht oder gar nicht ausgeführt werden konnten.
Damit Benutzer die Software für eine bestimmte Plattform auf einer anderen Plattform verwenden können (z. B. mit Pre-OSX MacOS-Software auf einem Commodore Amiga), war mehr als nur die "Installation der Software" erforderlich. Diese beiden Maschinen verwendeten völlig unterschiedliche Prozessorarchitekturen und Zusatzhardware. Es gab einfach keine Möglichkeit, ein Betriebssystem auf der Hardware eines anderen Computers auszuführen.
Emulation
Emulation ist wie ein Cousin der Virtualisierung, sie sind tatsächlich verwandt und haben ähnliche Ziele. Einer zeugte den anderen sozusagen.
Diese unterschiedlichen Hardwareplattformen bedeuteten, dass, wenn Sie eine Software von einem anderen Betriebssystem auf Ihrem Computer verwenden wollten, alles an diesem Computer analysiert werden musste, um herauszufinden, wie es funktionierte, und dann ein Code geschrieben wurde, der in der funktionierte genauso wie der Hardware-Teil. Dies musste für jedes Stück, den Prozessor, den Grafikcontroller, den Speichercontroller und alles getan werden .
Dann werden alle diese Teile zusammengefügt und da jedes Teil ein bisschen Hardware emuliert, haben wir dies eine emulierte Maschine genannt . Wir führen dann ein Betriebssystem auf dieser emulierten Maschine aus.
Das Problem ist, dass dieser Ansatz langsam ist. Sie hatten ganz einfach Glück, wenn Sie 1/10 der Geschwindigkeit der Originalhardware erreichen konnten. Sie brauchten buchstäblich eine Maschine, die um ein Vielfaches schneller war als Ihre emulierte Zielmaschine, um den emulierten Computer mit nahezu voller Geschwindigkeit laufen zu lassen.
Was hat sich also geändert?
Nun, hier ist die coole Sache. Nicht viel, wirklich. Die einzige große Änderung war, dass Hardwareplattformen standardisiert wurden. Wir haben aufgehört, benutzerdefinierte Hardware für jedes Betriebssystem zu erhalten, und alle Betriebssysteme wurden auf eine einzige Standardplattform verschoben oder auf dieser erstellt.
Die Komponenten, aus denen ein Mac heutzutage besteht, sind im Großen und Ganzen dieselben Komponenten, aus denen ein PC besteht. Linux lief immer auf PC-Hardware, also nichts Neues.
Emulation war lange Zeit noch die Norm, wenn Sie die Software von einem Betriebssystem auf einem anderen ausführen wollten. Sie können auch beide Betriebssysteme dual booten und ausführen, wie Sie möchten. Dies machte es jedoch schmerzhaft und ärgerlich, wenn Sie von der Codierung unter Linux zum Spielen unter Windows wechseln möchten.
Und dann..
Es kam die Idee, dass die zugrunde liegende Hardware dieselbe ist. Warum können nicht beide Betriebssysteme sie gemeinsam nutzen?
Am Ende hatten wir QEMU und WiNE und ähnliche Softwarelösungen. QEMU war lange Zeit ein Favorit für die harte Emulation von Computern, während WiNE Windows-Anwendungen unter Linux ausführen ließ, indem ihre OS-API-Aufrufe abgefangen und gepatcht wurden und der Code nativ auf dem Prozessor ausgeführt wurde.
QEMU hat etwas Ähnliches wie WiNE gemacht, aber auf einem viel niedrigeren Niveau. Es ist immer noch effektiv ein Emulator, aber für jeden getätigten Hardwareaufruf wurde eine "Patch and Redirect" -Methode verwendet, sodass alle Aufrufe stattdessen an ihre eigene emulierte Hardwareplattform gingen. weil der meiste Arbeitscode in einem Programm keine Hardwareaufrufe beinhaltete (die meisten sind einfache Berechnungsströme mit einem Aufruf am Ende, um die Ergebnisse anzuzeigen).
Dies führte zu einer sofortigen Geschwindigkeitssteigerung für fast jedes Programm in der jetzt nicht wirklich emulierten Maschine. Programme liefen mit Verlangsamungen, die mehr davon abhingen, wie oft sie auf die "virtuelle" Hardware zugegriffen hatten, als davon, wie gut die Maschine emuliert werden konnte. Anstatt mit 1/10 der Geschwindigkeit zu laufen, liefen sie jetzt fast mit der gleichen Geschwindigkeit, als ob sie von Haus aus wären.
Wenn wir jetzt auf dem Prozessor arbeiten, warum funktioniert meine Grafikkarte dann nicht?
Das einzige Problem bei diesen neuen virtuellen Maschinen besteht darin, dass ein Betriebssystem naturgemäß davon ausgeht, dass es die gesamte Hardware des Computers direkt steuert , sodass es Funktionen wie Speicherverwaltung und Zugriff auf Hardware bereitstellen kann.
Dies bedeutet jedoch, dass virtuelle Maschinen zumindest in der Methode nicht vollständig von der Emulation abweichen können. Sie müssen weiterhin bestimmte Funktionen in der Software emulieren, z. B. eine Grafikkarte oder eine Netzwerkkarte, die dem in der virtuellen Maschine ausgeführten Betriebssystem vorgelegt werden muss, damit das Betriebssystem "Guest" glaubt, die vollständige Kontrolle über diese Hardware zu haben. Das Hauptbetriebssystem (aus Sicherheitsgründen) muss sich vor Programmen schützen, die direkt auf Hardware zugreifen. Dies schränkt das Gastbetriebssystem ein.
Dazu müssen sie "virtuelle" Hardwareteile für alles im Computer emulieren. Der gesamte Code wird jetzt nativ vom Prozessor ausgeführt, ist also nicht langsam, aber jede dieser virtuellen Hardware muss in Software geschrieben werden. Dies führt sowohl zu einer kleinen Beeinträchtigung der Leistung als auch möglicherweise zu einer großen Beeinträchtigung der Funktionalität .
Dies bedeutet, dass Ihre virtuelle Grafikkarte nicht dieselben Funktionen wie Ihre reale Grafikkarte haben kann und wird . Um die bestmögliche Leistung zu erzielen, kann die virtuelle Hardware so geschrieben werden, dass sie die am häufigsten verwendeten Funktionen unterstützt. 3D-Rendering ist jetzt in einer virtuellen Maschine möglich, entspricht jedoch nicht der realen Hardware.
Dies bedeutet, dass das Host-Betriebssystem die besten Hardwareoptionen erhält, während das Gastbetriebssystem allgemeine Hardwareoptionen erhält .
Eine virtuelle Maschine ist nicht so gut wie echte Hardware, sondern nur ein Werkzeug, um die Arbeit mit den Werkzeugen von einem System auf einem anderen zu vereinfachen.
Also was mache ich?
Sie müssen auswählen, was der Hauptzweck Ihres Computers sein soll.
Wenn Sie die neuesten Spiele auf Ihrer leistungsstarken Grafikkarte spielen und mit derselben Grafikkarte 1080p-Filme auf Ihrem 400-Zoll-HDMI-Fernseher abspielen möchten, aber nur gelegentlich Linux-Programme ausführen möchten, ist Windows möglicherweise die beste Wahl mit Linux als Gast.
Wenn Sie am Linux-Kernel arbeiten, Hardwaretreiber für Geräte in Ihrem Computer erstellen und gelegentlich Software für Windows schreiben und diese auf einer guten Annäherung an ein "Standard" Windows-System testen möchten, sind Sie möglicherweise besser mit Linux als Host und Windows als Gast.
Wenn Sie die Benutzerfreundlichkeit eines Mac mögen, aber für Windows programmieren möchten (oder wenn Sie ein Softwarepaket möchten, das nur Windows enthält), ist dies ebenfalls eine Option.
Ich sage nicht, dass Linux keine Spiele spielen kann oder dass MacOS nichts für Programmierer ist, da dies einfach eine Menge Lügen wäre. Es ist nur so, dass die einzige Person, die sagen kann, welches Betriebssystem für das, was Sie tun möchten, besser geeignet ist, Sie sind .
Sie müssen wirklich verstehen, was Ihre Maschine zuerst tun soll . Nur dann können Sie herausfinden, was eine virtuelle Maschine für Sie tun kann.
So beantworten Sie Ihre Fragen:
Will the graphics and video rendering quality will be just as good?
Nein. Die emulierte Grafikkarte bietet möglicherweise einige Funktionen der Host-Grafikkarte, unterstützt jedoch wahrscheinlich keine komplexen Funktionen wie Hardware-Videobeschleunigung oder CUDA-Programmierfunktionen.
Will there be any hardware issue such as using HDMI or WiDi?
Auch diese zusätzlichen Funktionen sind wahrscheinlich keine Funktion der verfügbaren emulierten / virtuellen Hardware.
Will applications run just as smoothly as long as enough RAM is allocated?
Die meisten Anwendungen (solange sie keine spezifischen Hardwarefunktionen erfordern) laufen fast so schnell wie auf echter Hardware, solange Sie weder den Host noch den Gast des Speichers hungern lassen.
Virtuelle Maschinen (VMs) werden immer langsamer ausgeführt als das Hostsystem, da das Gastsystem den Host auffordern muss, eine Schnittstelle zu Hardware wie Grafikkarte, Festplatten, Speicher usw. herzustellen, da es sich um ein Programm handelt, das auf dem Hostsystem ausgeführt wird hat keine direkte Kontrolle über die Hardware. Wenn Ihre Hardware jedoch damit umgehen kann, ist die Langsamkeit möglicherweise nicht allzu auffällig.
Der Grund dafür ist, dass der Prozessor jeweils nur einen Befehl ausführen kann. Programme bestehen normalerweise aus Tausenden oder Millionen von Maschinenanweisungen. Wenn der Computer gestartet wird, durchsucht er den Master Boot Record (MBR) nach einem Bootloader. Der Bootloader startet dann den Kernel. Der Kernel ist der Hauptprozess, der die gesamte Hardware steuert. Multitasking, bei dem zwischen mehreren Aufgaben gewechselt wird, ermöglicht es uns, mehr als ein Programm gleichzeitig auszuführen, obwohl zu einem bestimmten Zeitpunkt nur eines ausgeführt wird. Die meisten Prozessoren verbringen nur etwa 20% ihrer Zeit mit mathematischen Berechnungen. Mit Multi-Core-Prozessoren kann der nächste Befehl abgerufen werden, während auf einen anderen Core gewartet wird, um die Leerlaufzeit zu verkürzen und das System erheblich zu beschleunigen. Neben dem Kernel gibt es die Shell (die eine Schnittstelle für Benutzer bietet),
Virtualisierungssoftware ist eine Anwendung, die wie jede andere Anwendung vom Kernel verwaltet wird. Daher muss der Kernel der VM auf die Erlaubnis des Host-Kernels warten, um etwas zu tun, und wird häufig unterbrochen. Je mehr Prozesse auf dem Hostsystem ausgeführt werden, desto weniger Ausführungszeit wird der VM zugewiesen, wodurch sie langsamer wird. VMs laufen normalerweise drei- bis viermal langsamer als physische Maschinen.
Wenn Sie Spiele oder ähnliches ausführen möchten, würde ich viel RAM und so viel Kernelzeit wie möglich zuweisen. Mehrere Prozessoren helfen. Wenn Sie jedoch zu viel RAM zuweisen, wird das System langsamer, da der Zugriff auf Daten länger dauert und das Host-System möglicherweise übermäßig zwischengespeichert wird. Auf der anderen Seite führt zu wenig zu übermäßigem Festplatten-Caching beim Gast. Da Windows so ressourcenhungrig ist, würde ich mindestens 2 bis 4 GB RAM zuweisen, aber nicht mehr als die Hälfte Ihres RAM der VM zuweisen.
Wenn es zu langsam reagiert, ist Dual Boot möglicherweise die bessere Option. Auf diese Weise können beide Systemressourcen voll ausnutzen, aber leider können Sie jeweils nur eine ausführen. Wenn Sie dies tun, benötigen Sie wahrscheinlich mindestens drei Partitionen: eine für Linux, eine für Windows und eine (oder mehrere) für Ihre Dateien.
quelle
Damit. VMWare Player ist ein Hypervisor vom Typ 2. Das heißt, ein Gast sitzt auf einem Betriebssystem. Auf einem Hypervisor vom Typ 1 befindet sich die Virtualisierungsplattform über der Hardware. Da VMWare Player auf einem Typ 2-Hypervisor ausgeführt wird, läuft es langsamer als auf einem Typ 1. VMWare Player bietet jedoch die Möglichkeit, Ihre Hardwareanforderungen für Ihre VM anzupassen. Wenn Sie also ein System mit einem Quad-Core-Prozessor mit 4 GB RAM haben, können Sie es sich leisten, bis zu 1 oder 2 Kerne und dann 2 GB RAM (min. Erforderlich für Windows x64) anzubieten, um eine VM zu haben, die effizient läuft.
Zum Beispiel habe ich ein XPS 14z und Windows 7 darauf. Ich verwende auch eine Windows 7-VM. Ich habe ihr 2 GB RAM und 2 Prozessorkerne (von meinen 4) zugewiesen.
Wenn ich also Programme darauf ausführe (Notepad ++, Transwiz, Outlook, Word, Excel usw.), ist keine Verlangsamung festzustellen. Ich habe noch nie versucht, intensive Software darauf auszuführen (Photoshop usw.). Je nachdem, wofür Sie es verwenden, kann ein Typ-2-Hypervisor Ihren Anforderungen entsprechen oder auch nicht. Wenn Sie es zum Spielen verwenden möchten, hängt es vom Spiel ab. Ich habe ein paar Steam-Spiele darauf ausgeführt und hatte keine Probleme (manchmal RDP von meinem Fedora-Computer auf meine VM), aber es hängt wirklich von den Anforderungen des Spiels ab. Für Spiele in jeder Hinsicht würde ich keine VM verwenden, um dies zu tun. Ich spiele auf meinem W7-Computer und benutze dann eine VM (eigentlich Fedora), um andere Dinge zu tun. Sie möchten, dass die intensivsten Anwendungen zuerst auf Hardware zugreifen können.
quelle
Also habe ich Windows 7 in Linux Mint 12 über VMWare Player installiert. Das Video-Rendering von Windows 7 in Linux Mint ist schlechter als Windows 7 als Hauptbetriebssystem. Ich habe nichts konfiguriert und weiß nicht, ob etwas konfiguriert werden muss, um das Video-Rendering von AVI-Dateien zu verbessern.
Ich habe festgestellt, dass die Geschwindigkeit, mit der Apps ausgeführt werden, auf meinem 8-GB-Speicher sehr hoch ist. Das war kein Problem. Trotzdem habe ich nichts Super-Speicherintensives wie Video- oder Fotobearbeitung ausprobiert. Nur normale Office-Apps.
quelle
Das Problem mit der VM-Technologie besteht darin, dass Ihr physischer Speicher nicht auf die gleiche Weise adressiert werden kann, wenn Sie ein tatsächliches Betriebssystem mit diesem Speicher ausführen. Ein VM-Image verwendet die logische Speicheradressierung, wenn es mit demselben physischen Adressraum ausgeführt wird, dass Sie nicht beide Betriebssysteme gleichzeitig ausführen können. Obwohl die modernen VMs einen langen Weg zurückgelegt haben, kann man sogar sagen, dass sie zu 90% bis 95% qualitativ hochwertig sind, fehlt ihnen jedoch die Fähigkeit, Ihre Spiele mit voller Geschwindigkeit auszuführen. Diese 90% -95% zielen ausschließlich auf die logische Adressierung gegenüber der physischen Adressierung des Computerspeichers ab. Das andere Problem, das nur das Argument der Speicheradressierung / -zuweisung abdeckt, ist, dass Windows DirectX verwendet, soweit ich weiß, dass keine VM-Software, einschließlich VMware, die neueste DX-Version vollständig unterstützt. Wenn Sie also etwas anderes als DX 9 verwenden, sind Sie ziemlich durcheinander.
QEMU unter Linux ist wahrscheinlich das Beste für Spiele!
quelle