Bardzo dużo dołączyłem do mojej odpowiedzi poniżej, ale zachowałem oryginalną odpowiedź nietkniętą w celach informacyjnych.
TL: DR: Maszyny wirtualne są narzędziem i chociaż oferują łatwą możliwość korzystania z jednego systemu operacyjnego w innym, musisz być bardzo świadomy tego, jakie będzie zamierzone podstawowe użycie komputera, aby w pełni korzystać z systemu .
Twoje pytanie wydaje się być mocno skośne w stosunku do możliwości graficznych i wydajności interfejsu korzystania z maszyny wirtualnej, więc odpowiem na temat możliwości.
Głównym problemem jest to, że aby bezpiecznie zarządzać dostępem systemów operacyjnych gościa do urządzeń (a tym samym zapobiec deptaniu systemu operacyjnego gościa przez hosta i niszczeniu rzeczy), wszystkie urządzenia, których chcesz użyć, muszą zostać „emulowane”.
Oznacza to, że karta graficzna, którą widzi system operacyjny gościa, nie jest tą samą kartą graficzną, co system operacyjny hosta. Możliwe, że możesz włączyć funkcje takie jak renderowanie 3D u gościa, ale jest to obsługiwane przez pośredniego sterownika w twoim gościu, który przekazuje żądania do hosta w bezpieczny sposób, aby renderować 3D tam.
Jest bardzo wątpliwe, że funkcje takie jak te niezbędne do bezpiecznego odtwarzania płyt z niebieskimi promieniami na obsługiwanym wyświetlaczu HDMI są emulowane przez sterowniki karty graficznej gościa, więc prawdopodobnie nie zadziała.
Zasadniczo wszystko, co wymaga wsparcia sprzętowego na hoście, prawdopodobnie nie będzie dobrze działać u gościa. Nie wiem, jak działa WiDi, ale jeśli wymaga bezpośredniego dostępu do pamięci karty graficznej w celu udostępniania jej na telewizorze, nie będzie działać, chyba że używasz go z systemu operacyjnego hosta (Linux).
Poza tym pod względem wydajności maszyna wirtualna może zbliżyć się do tego, co byłaby, gdyby był głównym systemem operacyjnym, ale zawsze będą nakładane kary za dostęp do dysku twardego lub rywalizację z innymi zasobami, z których korzysta host.
Na początku...
Na początku mieliśmy komputer, który mógł obsługiwać tylko jeden system operacyjny. Ten system operacyjny zwykle działał dobrze tylko na konkretnym procesorze i innym sprzęcie znajdującym się w maszynie, podczas gdy inne systemy operacyjne mogły działać źle, jeśli w ogóle, na dostępnym sprzęcie natywnym.
Aby ludzie mogli korzystać z oprogramowania na jednej platformie na innej platformie (na przykład przy użyciu oprogramowania MacOS w wersji Pre-OSX na Commodore Amiga), wymagało czegoś więcej niż tylko „instalacji oprogramowania”. Te dwie maszyny wykorzystały zupełnie inną architekturę procesorów i sprzęt pomocniczy. Po prostu nie było sposobu, aby jeden system operacyjny mógł działać na sprzęcie innej maszyny.
Współzawodnictwo
Emulacja jest jak kuzyn wirtualizacji, są w rzeczywistości spokrewnieni i mają podobne cele. Jeden z nich był jakby drugim.
Te różne platformy sprzętowe miały na myśli to, że jeśli chcesz używać na komputerze jednego oprogramowania z innego systemu operacyjnego, wszystko na tym komputerze musi zostać przeanalizowane, aby dowiedzieć się, jak to działa, a następnie napisany fragment kodu, który działał w w taki sam sposób jak część sprzętowa. Trzeba było to zrobić dla każdego elementu, procesora, kontrolera grafiki, kontrolera pamięci, wszystkiego .
Następnie wszystkie te elementy są łączone, a ponieważ każdy element emuluje trochę sprzętu, nazwaliśmy to emulowaną maszyną . Następnie uruchamiamy system operacyjny na emulowanym komputerze.
Problem polega na tym, że takie podejście jest powolne. Po prostu miałeś szczęście, jeśli udało ci się osiągnąć 1/10 prędkości oryginalnego sprzętu. Dosłownie potrzebowałeś maszyny kilka razy szybciej niż docelowa emulowana maszyna, aby uruchomić emulowany komputer w dowolnym miejscu prawie na pełnej prędkości.
Co się zmieniło?
Oto fajna rzecz. Naprawdę niewiele. Jedyną dużą zmianą było znormalizowanie platform sprzętowych. Przestaliśmy dostawać niestandardowy sprzęt dla każdego systemu operacyjnego, a wszystkie systemy operacyjne zostały przeniesione lub zostały utworzone na jednej standardowej platformie.
Składniki, które składają się obecnie na komputery Mac, są w zasadzie tymi samymi komponentami, które składają się na komputery PC. Linux zawsze działał na sprzęcie PC, więc nic nowego.
Przez długi czas emulacja była nadal normą, jeśli chcesz uruchamiać oprogramowanie z jednego systemu operacyjnego na drugim. Możesz też uruchomić podwójnie i uruchomić dowolny system operacyjny, jak chcesz, ale to sprawiło, że bolesne i irytujące było przejście od kodowania w Linuksie do grania w gry w systemie Windows.
I wtedy..
Pojawił się pomysł, że skoro podstawowy sprzęt jest taki sam, dlaczego oba systemy operacyjne nie mogą go udostępniać?
Skończyło się na QEMU i WiNE i podobnych rozwiązaniach programowych. QEMU od dawna jest ulubionym narzędziem do twardej emulacji maszyn, podczas gdy WiNE zezwala aplikacjom Windows na działanie w Linuksie poprzez wychwytywanie i łatanie ich wywołań API systemu operacyjnego oraz zezwalanie kodowi na działanie na procesorze.
QEMU zrobiło coś podobnego do WiNE, ale zrobiło to na znacznie niższym poziomie. Nadal jest to skutecznie emulator, ale dla każdego wywołania sprzętowego używano metody „łatania i przekierowywania”, dzięki czemu wszystkie połączenia były kierowane na własną emulowaną platformę sprzętową. ponieważ większość działającego kodu w programie tak naprawdę nie obejmowała wywołań sprzętowych (większość to proste strumienie obliczeń z wywołaniem na końcu, aby wyświetlić wyniki).
Spowodowało to natychmiastowe zwiększenie prędkości prawie każdego programu w obecnie nieemulowanej maszynie. Programy działały ze spowolnieniami, bardziej zależnymi od tego, jak często uzyskiwały dostęp do „wirtualnego” sprzętu, niż od tego, jak dobrze można emulować maszynę. Zamiast biegać z prędkością 1/10 prędkości, biegali teraz z prawie taką samą prędkością, jak gdyby byli natywni.
Jeśli więc korzystamy teraz z procesora, dlaczego moja karta graficzna nie działa?
Jedynym problemem związanym z tymi nowymi maszynami wirtualnymi jest to, że system operacyjny z natury zakłada, że ma bezpośrednią kontrolę nad całym sprzętem znajdującym się w komputerze, dzięki czemu mogą one zapewniać takie funkcje, jak zarządzanie pamięcią i kontrola dostępu do sprzętu.
Oznacza to jednak, że maszyny wirtualne nie mogą całkowicie oderwać się od emulacji, przynajmniej metodycznie. Nadal muszą emulować pewne funkcje w oprogramowaniu, na przykład kartę graficzną lub kartę sieciową należy przedstawić systemowi operacyjnemu działającemu na maszynie wirtualnej, aby system operacyjny „Gość” uznał, że ma pełną kontrolę nad tym sprzętem. Główny system operacyjny (zgodnie z wymogami bezpieczeństwa) musi chronić się przed programami bezpośrednio uzyskującymi dostęp do sprzętu, co nakłada ograniczenia na system operacyjny gościa.
W tym celu muszą emulować „wirtualny” sprzęt dla wszystkiego na komputerze. Cały kod jest teraz uruchamiany natywnie przez procesor, więc nie jest wolny, ale każdy z tych elementów sprzętu wirtualnego musi być napisany w oprogramowaniu, co pociąga za sobą zarówno niewielką karę w wydajności, jak i potencjalnie dużą w zakresie funkcjonalności .
Oznacza to, że twoja wirtualna karta graficzna nie może i nie będzie mieć takich samych funkcji jak Twoja prawdziwa karta graficzna. Aby uzyskać najwyższą wydajność, można napisać sprzęt wirtualny obsługujący najczęściej używane funkcje, a renderowanie 3D jest teraz możliwe na maszynie wirtualnej, ale nadal nie jest takie samo jak prawdziwy sprzęt.
Oznacza to, że system operacyjny hosta otrzymuje najlepsze opcje sprzętowe, podczas gdy system operacyjny gościa otrzymuje ogólne opcje sprzętowe.
Maszyna wirtualna nie jest tak dobra jak prawdziwy sprzęt, jest tylko narzędziem ułatwiającym pracę z narzędziami z jednego systemu na drugim.
Więc co mam zrobić?
Musisz wybrać, jaki ma być główny cel komputera.
Jeśli chcesz grać w najnowsze gry na swojej karcie graficznej o dużej mocy i korzystać z tej samej mocy karty graficznej, aby odtwarzać pełne filmy 1080p na 400-calowym telewizorze HDMI, ale tylko od czasu do czasu chcesz programować w systemie Linux, Windows może być najlepszym rozwiązaniem z Linuksem jako gościem.
Jeśli chcesz pracować na jądrze Linuksa, tworzyć sterowniki sprzętowe dla urządzeń w komputerze, a czasami pisać oprogramowanie dla Windows i testować je na dobrym przybliżeniu „standardowego” systemu Windows, być może lepiej jest z Linuksem jako host, a Windows jako gość.
Jeśli podoba Ci się łatwość obsługi komputera Mac, ale chcesz programować w systemie Windows (lub potrzebujesz pakietu oprogramowania, który jest przeznaczony tylko dla systemu Windows), jest to również opcja.
Nie twierdzę, że Linux nie może grać w gry, ani że MacOS nie jest dla programistów, ponieważ byłoby to po prostu kłamstwem. Po prostu osoba, która może powiedzieć, który system operacyjny może być bardziej odpowiedni do tego, co chcesz zrobić, to ty .
Naprawdę musisz zrozumieć, co chcesz, aby Twoja maszyna najpierw zrobiła . Tylko wtedy możesz dowiedzieć się, co maszyna wirtualna może dla Ciebie zrobić.
Aby odpowiedzieć na twoje pytania:
Will the graphics and video rendering quality will be just as good?
Nie. Emulowana karta graficzna może zapewniać niektóre funkcje karty graficznej hosta, ale prawdopodobnie nie będzie obsługiwać złożonych funkcji, takich jak sprzętowe przyspieszenie wideo lub funkcje programowania CUDA.
Will there be any hardware issue such as using HDMI or WiDi?
Ponownie, te dodatkowe funkcje prawdopodobnie nie będą cechą jakiegokolwiek emulowanego / wirtualnego sprzętu, który jest dostępny.
Will applications run just as smoothly as long as enough RAM is allocated?
Większość aplikacji (o ile nie wymagają określonych funkcji sprzętowych) będzie działać prawie tak szybko, jak na prawdziwym sprzęcie, pod warunkiem, że nie będziesz głodować ani hosta, ani gościa pamięci.