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.