Czy system Windows 7 Inside Linux jest tak samo dobry, jak działający jak główny system operacyjny (szczególnie w przypadku grafiki i wideo)?

10

Nowy użytkownik systemu Linux. Zastanawiałem się, czy system Windows 7 w systemie Ubuntu / Linux Mint przez VMPlayer będzie taki sam, jak system Windows 7 jako główny system operacyjny.

Przez „to samo” mam na myśli w szczególności:

  • Czy jakość grafiki i renderowania wideo będzie równie dobra?

  • Czy wystąpią jakieś problemy sprzętowe, takie jak używanie HDMI lub WiDi?

  • Czy aplikacje będą działały równie płynnie, o ile przydzielona zostanie wystarczająca ilość pamięci RAM?

Jak mocna musi być maszyna, aby nie było zauważalnej różnicy? Szczegółowe dane techniczne mojego komputera to: http://www.gadgetspecs.info/2011/07/asus-u46e-bal5-review-of-specs-and.html . Mam również zainstalowany dysk SSD.

Tło: Obecnie mam odwrotną konfigurację z Linux Mint i Ubuntu w systemie Windows 7 i stwierdzam, że jakość wideo nie jest tak dobra jak w Windows 7.

Kamil Sindi
źródło

Odpowiedzi:

11

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.

Mokubai
źródło
+1 dziękuję za odpowiedź. Zmienię moje pytanie, aby odzwierciedlić „nachylenie”.
Kamil Sindi
8

Maszyny wirtualne (VM) zawsze działają wolniej niż system hosta, ponieważ system-gość musi poprosić hosta o połączenie się ze sprzętem, takim jak karta graficzna, dyski twarde, pamięć itp., Ponieważ jest to program działający w systemie hosta i nie ma bezpośredniej kontroli nad sprzętem. Jednak jeśli twój sprzęt sobie z tym poradzi, powolność może nie być zbyt zauważalna.

Powodem tego jest to, że procesor może wykonać tylko jedną instrukcję na raz. Programy zwykle składają się z tysięcy lub milionów instrukcji maszynowych. Po uruchomieniu maszyna skanuje główny rekord rozruchowy (MBR) w celu znalezienia programu ładującego. Program ładujący następnie uruchamia jądro. Jądro jest głównym procesem kontrolującym cały sprzęt. Wielozadaniowość, polegająca na przełączaniu między kilkoma zadaniami, pozwala nam uruchamiać więcej niż jeden program na raz, nawet jeśli w danym momencie wykonywany jest tylko jeden program. Większość procesorów spędza tylko około 20% swojego czasu na obliczeniach matematycznych. Procesory wielordzeniowe umożliwiają pobranie następnej instrukcji w oczekiwaniu na wykonanie obliczeń matematycznych przez inny rdzeń, co znacznie skraca czas bezczynności i znacznie przyspiesza system. Oprócz jądra istnieje powłoka (która zapewnia interfejs dla użytkowników),

Oprogramowanie do wirtualizacji to aplikacja, która podobnie jak każda inna aplikacja jest zarządzana przez jądro. Dlatego jądro maszyny wirtualnej musi czekać na pozwolenie z jądra hosta, aby cokolwiek zrobić i będzie często przerywane. Im więcej procesów uruchomionych w systemie hosta, tym krótszy czas wykonania zostanie przydzielony maszynie wirtualnej, co spowolni jej działanie. Maszyny wirtualne zwykle działają trzy do czterech razy wolniej niż maszyny fizyczne.

Jeśli zamierzasz uruchamiać gry lub coś w tym stylu, przydzieliłbym dużo pamięci RAM i jak najwięcej czasu jądra. Pomoc wielu procesorów. Jednak przydzielenie zbyt dużej ilości pamięci RAM spowolni system, ponieważ dostęp do danych zajmuje więcej czasu i może powodować nadmierne buforowanie dysku twardego w systemie hosta. Ale z drugiej strony zbyt mało spowoduje nadmierne buforowanie dysku twardego przez gościa. Ponieważ system Windows jest tak głodny zasobów, przydzielę co najmniej 2 do 4 GB pamięci RAM, ale nie przydzielę więcej niż połowy pamięci RAM maszynie wirtualnej.

Jeśli reaguje zbyt wolno, lepszym rozwiązaniem może być podwójny rozruch. W ten sposób oba będą w stanie w pełni wykorzystać zasoby systemowe, ale niestety możesz uruchomić tylko jeden na raz. Jeśli to zrobisz, prawdopodobnie będziesz potrzebować co najmniej trzech partycji: jednej dla systemu Linux, jednej dla systemu Windows i jednej (lub więcej) dla swoich plików.

ctype.h
źródło
Masz pojęcie, jak mocna musi być maszyna, aby nie było zauważalnej różnicy?
Kamil Sindi
Nie jestem do końca pewien, ponieważ na moich komputerach uruchomiłem Windows jako host. Radzę spróbować i sprawdzić, czy działa wystarczająco dobrze. Jeśli nie, użyłbym podwójnego rozruchu. Z moich osobistych doświadczeń wynika, że ​​takie rzeczy jak Wordperfect są wystarczająco szybkie, ale gry działają słabo na maszynach wirtualnych.
ctype.h
Jakie są szczegółowe informacje na temat twojego systemu? Ile masz pamięci RAM? Jaka jest częstotliwość procesora i liczba rdzeni? Czy obsługuje sprzętową obsługę wirtualizacji (HAV)?
ctype.h
+1 za bardzo interesujący przegląd. Moje specyfikacje to 8 GB pamięci RAM, dysk SSD i Intel Core i5-2410M (częstotliwość taktowania 2,3 GHz). Nie jestem pewien co do HAV. To bardzo nowy model (2011).
Kamil Sindi
6

Więc. VMWare Player to Hypervisor typu 2. Oznacza to, że gość siedzi na systemie operacyjnym. W hiperwizorze typu 1 platforma wirtualizacji znajduje się nad sprzętem. Wynika to z faktu, że VMWare Player działający na Hypervisoru typu 2 będzie działał wolniej niż coś na Typie 1. Jednak VMWare Player oferuje możliwość dostosowania wymagań sprzętowych dla maszyny wirtualnej. Więc jeśli masz system z czterordzeniowym procesorem z 4 GB pamięci RAM, możesz pozwolić sobie na zaoferowanie 1 lub 2 rdzeni, a następnie 2 GB pamięci RAM (wymagane minimum dla systemu Windows x64), aby maszyna wirtualna działała wydajnie.

Na przykład mam XPS 14z i mam na nim Windows 7. Pracuję również z maszyną wirtualną z systemem Windows 7 - przydzieliłem jej 2 GB pamięci RAM i 2 rdzenie procesorów (z moich 4).

Kiedy więc uruchamiam na nim programy (Notepad ++, Transwiz, Outlook, Word, Excel itp.), Nie widać zauważalnego spowolnienia. Nigdy nie próbowałem uruchamiać na nim intensywnego oprogramowania (Photoshop itp.). Tak więc, w zależności od tego, do czego go używasz - hypervisor typu 2 może, ale nie musi, pasować do twoich potrzeb. Jeśli chcesz go używać do grania, będzie to zależeć od gry. Uruchomiłem na nim kilka gier Steam i nie miałem żadnych problemów (czasami RDP z mojego komputera Fedora na maszynę wirtualną), ale tak naprawdę będzie to zależało od wymagań gry. W przypadku gier pod każdym względem nie użyłbym do tego maszyny wirtualnej. Gram na moim komputerze W7, a następnie używam maszyny wirtualnej (właściwie Fedory), aby robić inne rzeczy. Chcesz, aby najbardziej intensywne aplikacje miały pierwszy dostęp do sprzętu.

Ethabelle
źródło
1

Więc zainstalowałem Windows 7 w Linux Mint 12 za pośrednictwem VMWare Player. Renderowanie wideo Windows 7 w Linux Mint jest gorsze niż Windows 7 jako główny system operacyjny. Nie skonfigurowałem niczego i nie wiem, czy jest coś do skonfigurowania, aby poprawić renderowanie plików AVI.

Odkryłem, że szybkość działania aplikacji jest szybka w moim urządzeniu pamięci 8 GB. To nie był problem. To powiedziawszy, nie próbowałem niczego, co wymaga dużej ilości pamięci, jak edycja wideo lub zdjęć. Tylko zwykłe aplikacje pakietu Office.

Kamil Sindi
źródło
Zawsze możesz przydzielić więcej procesora, pamięci RAM lub pamięci wideo dla maszyny wirtualnej.
iglvzx
1

Problem z technologią VM polega na tym, że nie może ona adresować twojej pamięci fizycznej w ten sam sposób, jeśli korzystasz z rzeczywistego systemu operacyjnego z wykorzystaniem tej pamięci. Obraz maszyny wirtualnej korzysta z logicznego adresowania pamięci, jeśli działał z tą samą fizyczną przestrzenią adresowania, że ​​nie można uruchomić obu systemów operacyjnych jednocześnie. Chociaż współczesne maszyny wirtualne przeszły długą drogę, można nawet powiedzieć, że jakość gier 90% -95%, wciąż brakuje im możliwości uruchamiania gier z pełną prędkością. Te 90% -95% ma na celu wyłącznie adresowanie logiczne a fizyczne adresowanie pamięci komputera. Teraz, gdy dotyczy tylko argumentu adresowania / alokacji pamięci, drugim problemem jest to, że Windows używa DirectX, o ile wiem, że żadne oprogramowanie VM, w tym VMware, nie ma pełnej obsługi żadnego z najnowszych DX. Więc jeśli używasz czegokolwiek poza DX 9, jesteś prawie wkręcony.

QEMU w systemie Linux jest prawdopodobnie najlepszym rozwiązaniem do grania!

Losowa osoba
źródło