Windows 7 Inside Linux è valido quanto l'esecuzione come sistema operativo principale (specialmente per grafica e video)?


10

Nuovo utente Linux. Mi chiedevo se eseguire Windows 7 all'interno di Ubuntu / Linux Mint tramite VMPlayer sarà lo stesso di eseguire Windows 7 come sistema operativo principale.

Per "stesso" intendo in particolare:

  • La qualità della grafica e del rendering video sarà altrettanto buona?

  • Ci saranno problemi hardware come l'utilizzo di HDMI o WiDi?

  • Le applicazioni funzioneranno in modo uniforme fino a quando verrà allocata abbastanza RAM?

Quanto deve essere potente la macchina affinché non ci siano differenze evidenti? Le specifiche particolari della mia macchina sono: http://www.gadgetspecs.info/2011/07/asus-u46e-bal5-review-of-specs-and.html . Ho anche installato un SSD.

Contesto: al momento ho impostato il contrario con Linux Mint e Ubuntu in Windows 7 e sto scoprendo che la qualità del video non è buona come quella in Windows 7.

Risposte:


11

Ho aggiunto molto alla mia risposta di seguito, ma ho mantenuto intatta la mia risposta originale come riferimento.

TL: DR: le macchine virtuali sono uno strumento e mentre offrono la facile possibilità di utilizzare un sistema operativo all'interno di un altro, devi essere molto consapevole di quale sarà il tuo uso principale previsto del computer al fine di sfruttare appieno il sistema .

La tua domanda sembra essere fortemente inclinata verso le possibilità di prestazioni grafiche e di interfaccia dell'utilizzo di una macchina virtuale e quindi risponderò riguardo alle possibilità lì.

Il problema principale è che, al fine di gestire in sicurezza i sistemi operativi guest, l'accesso ai dispositivi (e quindi impedire al SO guest di calpestare l'host e rompere cose) tutti i dispositivi che si desidera utilizzare devono essere "emulati".

Ciò significa che la scheda grafica che il tuo SO guest può vedere non è la stessa scheda grafica che il tuo SO host può vedere. Potresti essere in grado di abilitare funzionalità come il rendering 3D nel guest, ma questo è gestito da un driver intermedio nel tuo guest che trasmette le richieste all'host in modo sicuro affinché il 3D sia reso lì.

È molto dubbio che funzioni come quelle necessarie per riprodurre i dischi blu-ray in modo sicuro su un display HDMI supportato siano emulate dai driver della scheda grafica guest e quindi probabilmente non funzioneranno.

Fondamentalmente tutto ciò che richiede supporto hardware sul tuo host non è probabile che funzioni bene, se non del tutto, nel tuo ospite. Non so come funziona WiDi, ma se richiede l'accesso diretto alla memoria della scheda video per condividerla con un televisore, non funzionerà se non lo si utilizza dal sistema operativo host (Linux).

Oltre a ciò in termini di prestazioni, una VM può avvicinarsi a ciò che sarebbe se fosse il sistema operativo principale, ma ci saranno sempre penalità in termini di accesso al dispositivo del disco rigido o contesa con altre risorse che l'host sta utilizzando.

All'inizio...

All'inizio avevamo un computer, quel computer poteva eseguire solo un sistema operativo. Quel sistema operativo tendeva solo a funzionare bene sul particolare processore e altro hardware che era nella macchina, con altri sistemi operativi in ​​grado di funzionare male, se non del tutto, sull'hardware nativo disponibile.

Affinché le persone siano in grado di utilizzare il software per una particolare piattaforma su un'altra piattaforma (ad esempio, utilizzando il software MacOS Pre-OSX su un Commodore Amiga) è richiesto più di una semplice "installazione del software". Queste due macchine utilizzavano architetture di processore completamente diverse e hardware ausiliario. Semplicemente, non era possibile eseguire un sistema operativo sull'hardware di un'altra macchina.

Emulazione

L'emulazione è come un cugino della virtualizzazione, in realtà sono correlati e hanno obiettivi simili. Uno generò l'altro per così dire.

Ciò che significavano queste diverse piattaforme hardware era che se volevi usare un pezzo di software da un altro sistema operativo sulla tua macchina, allora tutto ciò che riguardava quella macchina doveva essere analizzato per scoprire come funzionava, e poi un pezzo di codice scritto che funzionava nel allo stesso modo della parte hardware. Questo doveva essere fatto per ogni pezzo, il processore, il controller grafico, il controller di memoria, tutto .

Quindi tutti questi pezzi vengono messi insieme e poiché ogni pezzo emula un po 'di hardware, abbiamo chiamato questa una macchina emulata . Quindi eseguiamo un sistema operativo su questa macchina emulata.

Il problema è che questo approccio è lento. Molto semplicemente sei stato fortunato se avessi potuto raggiungere 1/10 della velocità dell'hardware originale. Avevi letteralmente bisogno di una macchina molte volte più veloce della tua macchina emulata di destinazione per far funzionare il computer emulato quasi ovunque alla massima velocità.

Quindi cosa è cambiato?

Bene, ecco la cosa bella. Non molto. L'unica grande modifica è stata la standardizzazione delle piattaforme hardware. Abbiamo smesso di ottenere hardware personalizzato per ogni sistema operativo e tutti i sistemi operativi sono stati spostati o creati su un'unica piattaforma standard.

I componenti che compongono un Mac in questi giorni sono, in linea di massima, gli stessi componenti che compongono un PC. Linux funzionava sempre su hardware PC, quindi nulla di nuovo lì.

Per molto tempo l'emulazione era ancora la norma se si voleva eseguire il software da un sistema operativo su un altro. Oppure puoi eseguire il dual-boot ed eseguire entrambi i sistemi operativi come desideri, ma questo ha reso doloroso e fastidioso se volevi passare dalla programmazione in Linux ai giochi in Windows.

E poi..

È nata l'idea che, poiché l'hardware sottostante è lo stesso, perché entrambi i sistemi operativi non possono condividerlo?

Abbiamo finito con QEMU e WiNE e soluzioni software simili. QEMU era da sempre uno dei preferiti per la forte emulazione di macchine, mentre WiNE consentiva alle applicazioni Windows di funzionare su Linux intrappolando e rattoppando le loro chiamate API del sistema operativo e lasciando che il codice funzionasse nativamente sul processore.

QEMU ha fatto qualcosa di simile a WiNE, ma a un livello molto più basso. È ancora efficacemente un emulatore, ma per ogni chiamata hardware che è stata effettuata hanno usato un metodo di "patch e reindirizzamento" in modo che tutte le chiamate andassero invece alla propria piattaforma hardware emulata. perché la maggior parte del codice funzionante in un programma in realtà non comportava chiamate hardware (la maggior parte sono semplici flussi di calcoli con una chiamata alla fine per visualizzare i risultati).

Ciò ha comportato un aumento di velocità istantaneo per quasi tutti i programmi nella macchina ora non emulata . I programmi funzionavano con rallentamenti che dipendevano più da quanto accedessero all'hardware "virtuale" piuttosto che da quanto bene si potesse emulare la macchina. Invece di correre a 1/10 della velocità, ora correvano quasi alla stessa velocità di se fossero nativi.

Quindi, se stiamo eseguendo il processore ora, perché la mia scheda grafica non funziona?

L'unico problema con queste nuove macchine virtuali è che per loro stessa natura un sistema operativo presuppone che abbia il controllo diretto di tutto l'hardware presente nel computer, in modo che possano fornire funzionalità come la gestione della memoria e controllare l'accesso all'hardware.

Ciò significa che le macchine virtuali non possono allontanarsi completamente dall'emulazione, almeno nel metodo. Devono comunque emulare determinate funzioni nel software, ad esempio una scheda grafica, o una scheda di rete deve essere presentata al sistema operativo in esecuzione nella macchina virtuale in modo che il sistema operativo "Ospite" pensi di avere il pieno controllo di tale hardware. Il sistema operativo principale (in base ai requisiti di sicurezza) deve proteggersi dai programmi che accedono direttamente all'hardware e ciò pone delle restrizioni sul sistema operativo guest.

Per fare ciò devono emulare pezzi "virtuali" di hardware per qualsiasi cosa nel computer. Ora tutto il codice viene eseguito in modo nativo dal processore, quindi non è lento, ma ognuno di quei pezzi di hardware virtuale deve essere scritto nel software, e ciò comporta sia una piccola penalità in termini di prestazioni sia potenzialmente una grande penalità in termini di funzionalità .

Ciò significa che la tua scheda grafica virtuale non può e non avrà le stesse funzionalità della tua vera scheda grafica. Per ottenere le massime prestazioni, l'hardware virtuale può essere scritto per supportare le funzionalità più utilizzate e il rendering 3D è ora possibile in una macchina virtuale, ma non è ancora lo stesso dell'hardware reale.

Ciò significa che il sistema operativo host ottiene le migliori opzioni hardware, mentre il sistema operativo guest ottiene opzioni hardware generiche .

Una macchina virtuale non è valida come l'hardware reale, è solo uno strumento per semplificare il lavoro con gli strumenti da un sistema a un altro.

Quindi cosa devo fare?

Devi scegliere quale vuoi che sia lo scopo principale del tuo computer.

Se vuoi giocare agli ultimi giochi sulla tua scheda grafica ad alta potenza e utilizzare la stessa potenza delle schede grafiche per riprodurre filmati 1080p completi sulla tua TV HDMI da 400 ", ma solo occasionalmente vuoi fare un po 'di programmazione Linux, Windows potrebbe essere la soluzione migliore con Linux come ospite.

Se vuoi lavorare sul kernel Linux, creare driver hardware per dispositivi nel tuo computer e, occasionalmente, scrivere del software per Windows e testarlo su una buona approssimazione di un sistema Windows "standard", allora potresti essere migliore con Linux come host e Windows come guest.

Se ti piace la facilità d'uso di un Mac ma vuoi programmare per Windows (o c'è un pacchetto software che desideri che sia solo Windows), anche questa è un'opzione.

Non sto dicendo che Linux non possa giocare o che MacOS non sia per i programmatori in quanto sarebbe semplicemente un branco di bugie. È solo quella persona che può dire quale sistema operativo potrebbe essere più adatto a quello che vuoi fare tu .

Devi davvero capire cosa vuoi che faccia prima la tua macchina . Solo allora puoi capire cosa può fare una macchina virtuale per te.

Per rispondere alle tue domande:

Will the graphics and video rendering quality will be just as good?

No. La scheda grafica emulata può fornire alcune funzionalità della scheda grafica host, ma probabilmente non supporterà funzionalità complesse come l'accelerazione video hardware o la programmazione CUDA.

Will there be any hardware issue such as using HDMI or WiDi?

Ancora una volta, queste funzionalità extra probabilmente non saranno una funzionalità dell'hardware emulato / virtuale disponibile.

Will applications run just as smoothly as long as enough RAM is allocated?

La maggior parte delle applicazioni (purché non richiedano funzionalità hardware specifiche) funzionerà quasi alla stessa velocità che avrebbero sull'hardware reale, a condizione che non si metta a morire di fame l'host o il guest della memoria.


+1 grazie per la tua risposta. Cambierò la mia domanda per riflettere la "inclinazione".
Kamil Sindi,

8

Le macchine virtuali (VM) funzionano sempre più lentamente del sistema host perché il sistema guest deve richiedere all'host di interfacciarsi con l'hardware, come la scheda grafica, i dischi rigidi, la memoria ecc. Perché è un programma in esecuzione nel sistema host e non ha il controllo diretto dell'hardware. Tuttavia, se l'hardware è in grado di gestirlo, la lentezza potrebbe non essere troppo evidente.

La ragione di ciò è che il processore può eseguire solo un'istruzione alla volta. I programmi di solito consistono in migliaia o milioni di istruzioni della macchina. All'avvio, la macchina esegue la scansione del Master Boot Record (MBR) per un bootloader. Il bootloader avvia quindi il kernel. Il kernel è il processo principale che controlla tutto l'hardware. Il multitasking, che sta cambiando tra più attività, ci consente di eseguire più di un programma alla volta, anche se solo uno viene eseguito in un determinato momento. La maggior parte dei processori impiega solo il 20% circa del proprio tempo a eseguire calcoli matematici. I processori multi-core consentono di recuperare le istruzioni successive in attesa che un altro core esegua la matematica, riducendo i tempi di inattività e accelerando notevolmente il sistema. Oltre al kernel, c'è la shell (che fornisce un'interfaccia agli utenti),

Il software di virtualizzazione è un'applicazione che, come qualsiasi altra applicazione, è gestita dal kernel. Pertanto, il kernel della VM deve attendere il permesso dal kernel host di fare qualsiasi cosa e verrà interrotto frequentemente. Maggiore è il numero di processi in esecuzione sul sistema host, minore sarà il tempo di esecuzione che verrà allocato alla VM, rendendolo più lento. Le macchine virtuali di solito funzionano da tre a quattro volte più lentamente delle macchine fisiche.

Se avessi intenzione di lanciare giochi o qualcosa del genere, avrei allocato molta RAM e il maggior tempo possibile del kernel. Aiutano più processori. Tuttavia, l'allocazione di troppa RAM rallenta il sistema, poiché richiede più tempo per accedere ai dati e può causare una cache del disco rigido eccessiva sul sistema host. D'altra parte, una quantità troppo piccola causerà una quantità eccessiva di cache del disco rigido sul guest. Poiché Windows è così affamato di risorse, allocare almeno 2 a 4 GB di RAM, ma non allocare più della metà della RAM nella VM.

Se risponde troppo lentamente, un'opzione migliore potrebbe essere il doppio avvio. In questo modo entrambi saranno in grado di utilizzare completamente le risorse di sistema, ma sfortunatamente è possibile eseguirne solo uno alla volta. Se lo fai, probabilmente vorrai almeno tre partizioni: una per Linux, una per Windows e una (o più) per i tuoi file.


Hai idea di quanto deve essere potente la macchina perché non ci siano differenze evidenti?
Kamil Sindi,

Non ne sono del tutto sicuro, poiché ho eseguito Windows solo come host sui miei computer. La mia raccomandazione sarebbe di provarlo e vedere se funziona abbastanza bene. Altrimenti userei un dual boot. La mia esperienza personale è stata che cose come Wordperfect sono abbastanza veloci, ma i giochi hanno prestazioni scarse nelle VM.
ctype.h,

Quali sono i dettagli specifici per il tuo sistema? Quanta RAM hai? Qual è la frequenza e il numero di core del tuo processore? Supporta Hardware Assisted Virtualization (HAV)?
ctype.h,

+1 per la panoramica molto interessante. Le mie specifiche sono 8 GB di RAM, unità a stato solido e Intel Core i5-2410M (velocità di clock a 2,3 GHz). Non sono sicuro dell'HAV. È un modello nuovissimo (2011).
Kamil Sindi,

6

Così. VMWare Player è un hypervisor di tipo 2. Ciò significa che un ospite si trova in cima a un sistema operativo. Su un hypervisor di tipo 1, la piattaforma di virtualizzazione si trova sopra l'hardware. È perché VMWare Player si trova su un hypervisor di tipo 2 che verrà eseguito più lentamente rispetto a qualcosa su un tipo 1. Tuttavia, VMWare Player offre la possibilità di personalizzare i requisiti hardware per la VM. Quindi, se disponi di un sistema con un processore quad core con 4 GB di RAM, puoi permetterti di offrire 1 o 2 core e quindi 2 GB di RAM (req min. Per Windows x64) per avere una VM che funzioni in modo efficiente.

Ad esempio, ho un XPS 14z e ho Windows 7 su di esso. Eseguo anche una macchina virtuale Windows 7: le ho assegnato 2 GB di RAM e 2 core del processore (dei miei 4).

Quindi quando eseguo programmi su di esso (Notepad ++, Transwiz, Outlook, Word, Excel ecc.) Non si nota alcun rallentamento. Non ho mai provato a eseguire software intenso su di esso (Photoshop, ecc.). Quindi, a seconda di cosa lo stai usando, un hypervisor di tipo 2 può o meno adattarsi alle tue esigenze. Se vuoi usarlo per giocare, dipenderà dal gioco. Ho eseguito alcuni giochi Steam su di esso e non ho avuto problemi (a volte ho RDP dalla mia macchina Fedora alla mia VM) ma dipenderà davvero dai requisiti del gioco. Per i giochi in tutti i sensi, non userei una VM per farlo. Gioco sulla mia macchina W7 e quindi uso una VM (Fedora, in realtà) per fare altre cose. Volete che le applicazioni più intense abbiano il primo accesso all'hardware.


1

Quindi ho installato Windows 7 in Linux Mint 12 tramite VMWare Player. Il rendering video di Windows 7 in Linux Mint è peggiore di Windows 7 come sistema operativo principale. Non ho configurato nulla e non so se c'è qualcosa da configurare per migliorare il rendering video dei file avi.

Ho trovato la velocità di esecuzione delle app veloce nella mia macchina da memoria da 8 GB. Non è stato un problema. Detto questo, non ho provato nulla di super memoria intensa come il video o il fotoritocco. Solo normali app di Office.


Puoi sempre allocare più CPU, RAM o memoria video per la tua macchina virtuale.
iglvzx,

1

Il problema con la tecnologia VM è che non può indirizzare la tua memoria fisica allo stesso modo se stavi eseguendo un sistema operativo reale usando tale memoria. Un'immagine di macchina virtuale utilizza l'indirizzamento della memoria logica se eseguita utilizzando lo stesso spazio di indirizzamento fisico non sarebbe in grado di eseguire entrambi i sistemi operativi contemporaneamente. Sebbene le moderne macchine virtuali abbiano fatto molta strada, si potrebbe persino dire che il 90% -95% dei giochi di qualità, mancano ancora della capacità di eseguire i giochi alla massima velocità. Il 90% -95% è indirizzato esclusivamente all'indirizzamento logico rispetto all'indirizzamento fisico della memoria del computer. Ora che copre solo l'argomento di indirizzamento / allocazione della memoria, l'altro problema è che Windows utilizza DirectX per quanto ne so, nessun software VM, incluso VMware, ha il pieno supporto per nessuno dei DX più recenti. Quindi se usi qualcosa oltre DX 9 sei praticamente fregato.

QEMU su Linux è probabilmente il migliore per i giochi!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.