Aşağıdaki cevabıma çok şey ekledim, ancak orijinal cevabımı referans için sağlam tuttum.
TL: DR: Sanal Makineler bir araçtır ve bir işletim sistemini bir diğerinde kullanma kolaylığını sunarken, sistemi tam olarak kullanabilmek için bilgisayarın birincil kullanımınızın ne olacağının çok fazla farkında olmalısınız. .
Sorunuz, sanal bir makine kullanmanın grafik ve arayüz performans olasılıklarına güçlü bir şekilde eğimli görünüyor ve bu yüzden buradaki olasılıklar hakkında cevap vereceğim.
Temel sorun, konuk işletim sistemlerinin cihazlara erişimini güvenli bir şekilde yönetmek için (ve böylece konuk işletim sisteminin ana bilgisayar üzerinde ezilmesini ve bir şeyleri kırmasını önlemek için) kullanmak istediğiniz tüm cihazların "taklit edilmesi" gerektiğidir.
Bunun anlamı, konuk işletim sisteminizin görebileceği grafik kartının ana işletim sisteminizin görebileceği grafik kartı olmamasıdır . Konukta 3B oluşturma gibi özellikleri etkinleştirebilirsiniz, ancak bu konukunuzda, 3B'nin orada oluşturulması için istekleri ana bilgisayara kadar güvenli bir şekilde ileten bir ara sürücü tarafından ele alınır.
Desteklenen bir HDMI ekrana güvenli bir şekilde oynatmak için gerekli olanlar gibi özelliklerin konuk grafik kartı sürücüleri tarafından taklit edilmesi çok şüphelidir ve bu muhtemelen işe yaramayacaktır.
Temel olarak, ana makinenizde donanım desteği gerektiren herhangi bir şeyin, konuklarınızda hiç iyi çalışmaz. WiDi'nin nasıl çalıştığını bilmiyorum, ancak bir televizyonda paylaşmak için video kartı belleğinize doğrudan erişim gerektiriyorsa, ana bilgisayar (Linux) işletim sisteminizden kullanmadığınız sürece çalışmaz.
Bunun dışında performans açısından bir VM, ana işletim sistemi olsaydı ne olabileceğine yaklaşabilir, ancak sabit sürücü cihazına erişim veya ana bilgisayarın kullandığı diğer kaynaklarla çekişme konusunda her zaman cezalar olacaktır.
Başlangıçta...
Başlangıçta bir bilgisayarımız vardı, bu bilgisayar sadece bir işletim sistemi çalıştırabiliyordu. Bu işletim sistemi yalnızca belirli bir işlemci ve makinedeki diğer donanımlarda iyi çalışma eğilimindeydi, diğer işletim sistemleri ise yalnızca mevcut yerel donanımda kötü bir şekilde çalışabiliyordu.
İnsanların yazılımı belirli bir platform için başka bir platformda kullanabilmeleri için (örneğin, Commodore Amiga'da Pre-OSX MacOS yazılımını kullanarak) sadece "yazılımı kurmaktan" daha fazlası gerekir. Bu iki makine tamamen farklı işlemci mimarileri ve yardımcı donanımlar kullandı. Bir işletim sisteminin başka bir makinenin donanımında çalışmasının hiçbir yolu yoktu.
emülasyon
Öykünme Sanallaştırmanın kuzeni gibidir, aslında birbiriyle ilişkilidir ve benzer hedefleri vardır. Biri diğeri olduğu gibi başlar.
Bu farklı donanım platformlarının anlamı, makinenizde başka bir işletim sisteminden bir yazılım parçası kullanmak istiyorsanız, o zaman makinenin nasıl çalıştığını öğrenmek için o makinenin her şeyin analiz edilmesi ve daha sonra donanım parçasıyla aynı şekilde. Bu her parça, işlemci, grafik denetleyicisi, bellek denetleyicisi, her şey için yapılmalıdır .
Sonra tüm bu parçalar bir araya getirilir ve her parça biraz donanım taklit ettiği için buna taklit makine denir . Daha sonra bu taklit makinenin üstünde bir işletim sistemi çalıştırıyoruz.
Sorun şu ki, bu yaklaşım yavaş. Orijinal donanımın hızının 1 / 10'unu başarabilirseniz oldukça şanslısınız. Taklit edilen bilgisayarı tam hızda herhangi bir yerde çalıştırmak için tam anlamıyla bir hedef makineye göre birkaç kat daha hızlı bir makineye ihtiyacınız vardı.
Peki ne değişti?
İşte harika bir şey. Gerçekten pek değil. Tek büyük değişiklik, donanım platformlarının standartlaştırılmasıydı. Her işletim sistemi ve işletim sistemlerinin tümü tek bir standart platforma taşındı veya bu platformda oluşturuldu.
Bugünlerde bir Mac oluşturan bileşenler, genel olarak bir PC'yi oluşturan bileşenlerdir. Linux her zaman PC donanımında çalıştı, bu yüzden yeni bir şey yok.
Yazılımı bir işletim sisteminden başka bir işletim sisteminde çalıştırmak istiyorsanız, emülasyon uzun süre normdaydı. Ya da herhangi bir işletim sistemini istediğiniz gibi çift önyükleme yapabilir ve çalıştırabilirsiniz, ancak Linux'ta kodlamadan Windows'ta oyun oynamaya gitmek istiyorsanız, bu acı verici ve can sıkıcı bir hale geldi.
Ve sonra..
Temel donanım aynı olduğu için neden her iki işletim sistemi de onu paylaşamıyor?
Sonunda QEMU ve WiNE ve benzeri yazılım çözümlerini bulduk. QEMU, makinelerin sert emülasyonu için uzun zamandır favoriydi, WiNE Windows uygulamalarının OS API çağrılarını yakalayıp yamalayarak ve kodun işlemcide yerel olarak çalışmasına izin vererek Linux'ta çalışmasına izin verdi.
QEMU, WiNE'ye benzer bir şey yaptı, ancak çok daha düşük bir seviyede yaptı. Hala etkili bir emülatördür, ancak yapılan her donanım çağrısı için bir "yama ve yönlendirme" yöntemi kullandılar, böylece herhangi bir çağrı kendi taklit donanım platformuna gitti. çünkü bir programdaki çoğu çalışma kodu aslında donanım çağrılarını içermiyordu (çoğu, sonuçları görüntülemek için sonunda bir çağrı olan basit hesaplama akışlarıdır).
Bu, şimdi gerçekten taklit edilmeyen makinedeki hemen hemen her program için ani bir hız artışı ile sonuçlandı . Programlar, makinenin ne kadar iyi taklit edileceğinden ziyade "sanal" donanıma ne kadar eriştiklerine bağlı olarak yavaşlamalarla koştu. Hızın 1 / 10'unda koşmak yerine, şu anda doğal olarak neredeyse aynı hızda çalışıyorlardı.
Peki, şimdi işlemcide çalışıyorsak, grafik kartım neden çalışmıyor?
Bu yeni Sanal Makinelerdeki tek sorun, doğası gereği bir İşletim Sisteminin , bilgisayardaki tüm donanımları doğrudan denetlediğini varsaymasıdır , böylece bellek yönetimi ve donanıma erişimi denetleme gibi özellikler sağlayabilirler.
Bunun anlamı, Sanal Makinelerin en azından yöntemde öykünmeden tamamen uzaklaşamamasıdır. Yazılımdaki belirli işlevleri taklit etmeleri gerekiyor, örneğin bir grafik kartı veya ağ kartı, sanal makinede çalışan işletim sistemine sunulmalıdır, böylece "Misafir" işletim sistemi , bu donanım üzerinde tam denetime sahip olduğunu düşünür . Ana işletim sistemi (güvenlik gerekliliklerine göre) kendini donanıma doğrudan erişen programlara karşı korumalıdır ve bu da konuk işletim sistemine kısıtlamalar getirir.
Bunu yapmak için, bilgisayardaki her şey için "sanal" donanım parçalarını taklit etmek zorundalar. Tüm kod şimdi işlemci tarafından yerel olarak çalıştırılıyor, bu yüzden yavaş değil, ancak bu sanal donanım parçalarının her birinin yazılımda yazılması gerekiyor ve bu hem performansta küçük bir ceza hem de işlevsellik açısından büyük bir ceza gerektiriyor .
Bunun anlamı, sanal grafik kartınızın gerçek grafik kartınızla aynı özelliklere sahip olmaması ve sahip olmamasıdır . En iyi performansı elde etmek için, en çok kullanılan özellikleri desteklemek üzere sanal donanım yazılabilir ve artık sanal makinede 3B oluşturma mümkündür, ancak yine de gerçek donanımla aynı değildir.
Bunun anlamı, ana işletim sisteminin en iyi donanım seçeneklerini, konuk işletim sisteminin genel donanım seçeneklerini almasıdır .
Sanal bir makine gerçek donanım kadar iyi değildir, sadece bir sistemden diğerinde araçlarla çalışmayı kolaylaştıran bir araçtır.
Peki ben ne yapacağım?
Bilgisayarınızın ana amacının ne olmasını istediğinizi seçmelisiniz.
En yeni oyunları yüksek güçlü grafik kartınızda oynamak ve aynı grafik kartlarını 400 "HDMI TV'nizde tam 1080p filmler oynatmak için kullanmak istiyorsanız, ancak sadece arada sırada bazı Linux programlama yapmak istiyorsanız, Windows en iyi bahsiniz olabilir Linux ile konuk olarak.
Linux çekirdeği üzerinde çalışmak, bilgisayarınızdaki aygıtlar için donanım sürücüleri yapmak ve bazen Windows için bazı yazılımlar yazmak ve "standart" bir Windows sisteminin iyi bir yaklaşımıyla test etmek istiyorsanız, Linux ile daha iyi olabilirsiniz konak ve misafir olarak Windows.
Bir Mac'in kullanım kolaylığını seviyorsanız, ancak Windows için programlamak istiyorsanız (veya yalnızca Windows olan istediğiniz bir yazılım paketi varsa), bu da bir seçenektir.
Linux'un oyun oynayamayacağını ya da MacOS'un programcılar için olmadığını, çünkü bu bir yalan paketi olacağını söylemiyorum. Sadece hangi OS'nin yapmak istediğiniz şeye daha uygun olabileceğini söyleyebilen kişi sizsiniz .
Gerçekten makinenizin ne yapmak istediğinizi anlamak zorunda ilk . Ancak o zaman sanal bir makinenin sizin için neler yapabileceğini öğrenebilirsiniz.
Sorularınızı cevaplamak için:
Will the graphics and video rendering quality will be just as good?
Hayır. Taklit grafik kartı, ana grafik kartının bazı özelliklerini sağlayabilir, ancak muhtemelen donanım video hızlandırma veya CUDA programlama özellikleri gibi karmaşık özellikleri desteklemeyecektir.
Will there be any hardware issue such as using HDMI or WiDi?
Yine, bu ekstra özellikler, mevcut olan herhangi bir taklit / sanal donanımın bir özelliği olmayacaktır.
Will applications run just as smoothly as long as enough RAM is allocated?
Çoğu uygulamalar (çok uzun değil mi özgü donanım özellikleri gerektiren gibi) çalışır neredeyse ana makineyi veya hafıza konuk ya açlıktan yok sürece, olabildiğince hızlı gerçek donanım üzerinde olduğu gibi.