Questão O Windows 7 Inside Linux é tão bom quanto o SO principal (esp para gráficos e vídeo)?


Novo usuário do Linux. Estava imaginando se rodar o Windows 7 dentro do Ubuntu / Linux Mint via VMPlayer seria o mesmo que rodar o Windows 7 como o sistema operacional principal.

Por "mesmo" eu particularmente quero dizer:

  • Os gráficos e a qualidade de renderização de vídeo serão tão bons?

  • Haverá algum problema de hardware, como o uso de HDMI ou WiDi?

  • Os aplicativos serão executados da mesma maneira, contanto que RAM suficiente seja alocada?

Quão poderosa a máquina tem que ser para que não haja diferença perceptível? As especificações particulares da minha máquina são: http://www.gadgetspecs.info/2011/07/asus-u46e-bal5-review-of-specs-and.html. Eu também tenho um SSD instalado.

Background: Eu atualmente tenho o oposto configurado com Linux Mint e Ubuntu dentro do Windows 7 e estou achando que a qualidade do vídeo não é tão boa quanto no Windows 7.


10


origem




Respostas:


Eu acrescentei muito à minha resposta abaixo, mas mantive minha resposta original intacta como referência.

TL: DR: As máquinas virtuais são uma ferramenta e, embora ofereçam a capacidade fácil de usar um sistema operacional dentro de outro, você precisa estar bem ciente de qual será o uso principal do computador para poder aproveitar ao máximo o sistema. .

Sua pergunta parece ser fortemente inclinada para as possibilidades gráficas e de desempenho da interface de usar uma máquina virtual e, portanto, responderei sobre as possibilidades existentes.

O principal problema é que, para gerenciar com segurança o acesso dos sistemas operacionais convidados aos dispositivos (e assim evitar que o sistema operacional convidado atropele o host e quebre as coisas), todos os dispositivos que você deseja usar devem ser "emulados".

O que isto significa é que a placa gráfica que seu sistema operacional convidado pode ver é não a mesma placa gráfica que seu sistema operacional hospedeiro pode ver. Você pode habilitar recursos como renderização 3D no guest, mas isso é tratado por um driver intermediário em seu guest, que passa as solicitações até o host de maneira segura para que o 3D seja renderizado lá.

É muito duvidoso que recursos como os necessários para reproduzir discos blue-ray de forma segura em um monitor HDMI suportado sejam emulados pelos drivers da placa gráfica do convidado e, portanto, isso provavelmente não funcionará.

Basicamente, qualquer coisa que exija suporte de hardware em seu host provavelmente não funcionará bem, se for o caso, em seu convidado. Eu não sei como funciona o WiDi, mas se ele requer acesso direto à sua memória de placa de vídeo para compartilhá-lo em uma televisão, ele não funcionará a menos que você o use do sistema operacional do seu host (Linux).

Além disso, em termos de desempenho, uma VM pode se aproximar do que seria se fosse o SO principal, mas sempre haverá penalidades em termos de acesso ao dispositivo de disco rígido ou contenção com outros recursos que o host está usando.

No início...

No começo nós tínhamos um computador, esse computador só podia rodar um sistema operacional. Esse sistema operacional tendia apenas a rodar bem no processador específico e em outro hardware que estava na máquina, com outros sistemas operacionais apenas capazes de rodar mal, se de todo, no hardware nativo disponível.

Para que as pessoas possam usar o software para uma plataforma específica em outra plataforma (por exemplo, usar o software Mac OS anterior ao OSX em um Commodore Amiga), é necessário mais do que apenas "instalar o software". Essas duas máquinas usavam arquiteturas de processador e hardware auxiliares completamente diferentes. Simplesmente não havia como um SO rodar no hardware de outra máquina.

Emulação

A emulação é como um primo da virtualização, eles são realmente relacionados e têm objetivos semelhantes. Um gerou o outro como se fosse.

O que essas diferentes plataformas de hardware significavam era que, se você quisesse usar um software de outro sistema operacional em sua máquina, tudo sobre essa máquina teve que ser analisada para descobrir como ela funcionava, e então um pedaço de código escrito que funcionava da mesma maneira que a parte de hardware. Isso tinha que ser feito para cada peça, o processador, o controlador gráfico, o controlador de memória, tudo.

Então todas essas peças são colocadas juntas e como cada peça está emulando um pouco de hardware nós chamamos isso de um máquina emulada. Em seguida, executamos um sistema operacional na parte superior dessa máquina emulada.

O problema é que essa abordagem é lenta. Simplesmente você teve sorte se conseguiu 1 / 10th da velocidade do hardware original. Você literalmente precisava de uma máquina várias vezes mais rápida que a máquina emulada de destino para rodar o computador emulado em qualquer lugar perto da velocidade máxima.

Então, o que mudou?

Bem, aqui está a coisa legal. Não muito realmente. A única grande mudança foi que as plataformas de hardware foram padronizadas. Paramos de obter hardware personalizado para todos os sistemas operacionais e todos os sistemas operacionais foram movidos para, ou foram criados em uma única plataforma padrão.

Os componentes que compõem um Mac atualmente são, em geral, os mesmos componentes que compõem um PC. Linux sempre rodava em hardware de PC, então nada de novo lá.

Por um bom tempo, a emulação ainda era a norma se você quisesse executar o software de um sistema operacional em outro. Ou você poderia fazer o boot duplo e rodar o sistema operacional como quisesse, mas isso tornava doloroso e chato se você quisesse ir do código no Linux para jogar no Windows.

E depois..

Surgiu a ideia de que, como o hardware subjacente é o mesmo, por que os dois sistemas operacionais não podem compartilhá-lo?

Acabamos com o QEMU e o WiNE e soluções de software semelhantes. O QEMU era há muito tempo o favorito para a emulação de máquinas, enquanto o WiNE permitia que os aplicativos do Windows rodassem no Linux prendendo e corrigindo suas chamadas de API do sistema operacional e permitindo que o código fosse executado nativamente no processador.

O QEMU fez algo semelhante ao WiNE, mas fez em um nível muito mais baixo. Ainda é efetivamente um emulador, mas para cada chamada de hardware que foi feita eles usaram um método de "patch e redirecionamento" para que todas as chamadas fossem para sua própria plataforma de hardware emulada. porque a maioria dos códigos de trabalho em um programa não envolve realmente chamadas de hardware (a maioria são simples fluxos de cálculos com uma chamada no final para exibir os resultados).

Isso resultou em um aumento de velocidade instantâneo para quase todos os programas no agora não realmente emulado máquina. Programas executados com lentidão dependiam mais de quanto acessavam o hardware "virtual" do que de quão bem a máquina poderia ser emulada. Em vez de correr a 1 / 10th da velocidade, eles agora estavam rodando quase na mesma velocidade como se fossem nativos.

Então, se estamos rodando no processador agora, por que a minha placa gráfica não funciona?

O único problema com estas novas máquinas virtuais é que, pela sua própria natureza, um sistema operacional assume que ele tem controle direto de todos o hardware que está no computador, para que eles possam fornecer recursos como gerenciamento de memória e controlar o acesso ao hardware.

O que isso significa, porém, é que as Máquinas Virtuais não podem se afastar completamente da emulação, pelo menos no método. Eles ainda têm que emular certas funções no software, por exemplo, uma placa de vídeo ou placa de rede devem ser apresentadas ao sistema operacional em execução na máquina virtual para que o sistema operacional "Convidado" ache que tem cheio controle desse hardware. O sistema operacional principal (por requisitos de segurança) deve se proteger contra programas acessando diretamente o hardware e isso coloca restrições no sistema operacional convidado.

Para fazer isso, eles precisam emular peças "virtuais" de hardware para tudo no computador. Todo o código é executado nativamente pelo processador agora, portanto não é lento, mas cada uma dessas peças de hardware virtual deve ser escrita em software, e isso resulta em uma pequena penalidade no desempenho e potencialmente em uma grande penalidade em termos de funcionalidade .

O que isso significa é que sua placa de vídeo virtual não pode e não terá os mesmos recursos que a sua real placa de vídeo. Para obter o máximo desempenho, o hardware virtual pode ser gravado para suportar os recursos mais usados, e a renderização 3D agora é possível em uma máquina virtual, mas ainda não é o mesmo que hardware real.

O que isso significa é que o sistema operacional do host obtém as melhores opções de hardware, enquanto o sistema operacional convidado genérico opções de hardware.

Uma máquina virtual não é tão boa quanto um hardware real, é apenas uma ferramenta para facilitar o trabalho com as ferramentas de um sistema em outro.

Então o que eu faço?

Você tem que escolher o que você quer que o principal objetivo do seu computador seja.

Se você quiser jogar os jogos mais recentes em sua placa gráfica de alta potência e usar as mesmas placas gráficas para reproduzir filmes em 1080p na sua TV HDMI de 400 ", mas ocasionalmente quiser fazer alguma programação em Linux, o Windows pode ser sua melhor aposta com o Linux como convidado.

Se você quer trabalhar no kernel do Linux, fazer drivers de hardware para dispositivos em seu computador e ocasionalmente escrever algum software para Windows e testá-lo em uma boa aproximação de um sistema Windows "padrão", então pode ser que você seja melhor com o Linux como host e Windows como convidado.

Se você gosta da facilidade de uso de um Mac, mas quer programar para o Windows (ou se há um pacote de software que você quer que seja apenas para Windows), então essa também é uma opção.

Eu não estou dizendo que o Linux não pode jogar, ou que o MacOS não é para programadores, pois isso seria simplesmente um pacote de mentiras. É só que a única pessoa que pode dizer qual sistema operacional pode ser mais adequado para o que você quer fazer é você.

Você realmente tem que entender o que você quer que sua máquina faça primeiro. Só então você pode descobrir o que uma máquina virtual pode fazer por você.

Para responder suas perguntas:

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

Não. A placa gráfica emulada pode fornecer alguns recursos da placa gráfica do host, mas provavelmente não suportará recursos complexos, como aceleração de vídeo por hardware ou recursos de programação CUDA.

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

Novamente, esses recursos extras provavelmente não serão um recurso de qualquer hardware emulado / virtual disponível.

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

A maioria das aplicações (desde que não exijam recursos específicos de hardware) será executada por pouco tão rápido quanto em hardware real, desde que você não morra de fome nem o anfitrião ou o convidado da memória.


10



+1 obrigado pela sua resposta. Vou mudar a minha pergunta para refletir a "inclinação". - ksindi


Máquinas Virtuais (VMs) sempre são executadas mais lentamente que o sistema host porque o sistema convidado precisa solicitar ao host a interface com hardware, como sua placa de vídeo, discos rígidos, memória etc. porque é um programa em execução no sistema host e não tem controle direto do hardware. No entanto, se o seu hardware puder lidar com isso, a lentidão pode não ser muito perceptível.

A razão para isso é que o processador só pode executar uma instrução por vez. Os programas geralmente consistem em milhares ou milhões de instruções de máquina. Quando a máquina é iniciada, ela verifica o registro mestre de inicialização (MBR) para um gerenciador de inicialização. O bootloader então inicia o kernel. O kernel é o processo principal que controla todo o hardware. A multitarefa, que está alternando entre várias tarefas, nos permite executar mais de um programa de cada vez, mesmo que apenas um esteja sendo executado em um determinado momento. A maioria dos processadores gasta apenas cerca de 20% do seu tempo realizando cálculos matemáticos. Processadores multi-core permitem que a próxima instrução seja buscada enquanto espera que outro núcleo faça a matemática, reduzindo o tempo ocioso e acelerando o sistema significativamente. Além do kernel, há o shell (que fornece uma interface para os usuários), serviços / daemons (processos executados em segundo plano, por exemplo, para suporte ao sistema, segurança, etc.) e aplicativos.

O software de virtualização é um aplicativo que, como qualquer outro aplicativo, é gerenciado pelo kernel. Assim, o kernel da VM deve aguardar a permissão do kernel do host para fazer qualquer coisa e será interrompido com freqüência. Quanto mais processos estiverem em execução no sistema host, menos tempo de execução será alocado para a VM, tornando-a mais lenta. As VMs geralmente são executadas de três a quatro vezes mais lentas que as máquinas físicas.

Se você for rodar jogos ou algo assim, eu alocaria bastante memória RAM e o máximo de tempo de kernel possível. Vários processadores ajudam. No entanto, a alocação excessiva de RAM reduz a velocidade do sistema, pois leva mais tempo para acessar os dados e pode causar cache excessivo do disco rígido no sistema host. Mas, por outro lado, muito pouco causará quantidades excessivas de cache do disco rígido no convidado. Como o windows está tão faminto por recursos, eu alocaria pelo menos 2 a 4 GB de RAM, mas não aloca mais da metade de sua RAM para a VM.

Se responder muito lentamente, uma opção melhor pode ser a inicialização dupla. Desta forma, ambos serão capazes de utilizar plenamente os recursos do sistema, mas infelizmente você só pode executar um de cada vez. Se você fizer isso, provavelmente precisará de pelo menos três partições: uma para o Linux, uma para o Windows e uma (ou mais) para seus arquivos.


8



Alguma ideia de como a máquina tem que ser poderosa para que não haja diferença perceptível? - ksindi
Não tenho certeza, pois só executo o Windows como host em meus computadores. Minha recomendação seria tentar e ver se funciona bem o suficiente. Se não, eu usaria uma inicialização dupla. Minha experiência pessoal tem sido que coisas como o Wordperfect são rápidas o suficiente, mas os jogos têm um desempenho ruim nas VMs. - ctype.h
Quais são os detalhes específicos do seu sistema? Quanta RAM você tem? Qual a frequência do seu processador e o número de núcleos? Suporta Virtualização Assistida por Hardware (HAV)? - ctype.h
+1 para a visão geral muito interessante. Minhas especificações são 8GB de RAM, Solid State Drive e Intel Core i5-2410M (velocidade de clock de 2,3 GHz). Não tenho certeza sobre o HAV. É um modelo muito novo (2011). - ksindi


Assim. O VMWare Player é um hipervisor do tipo 2. Isso significa que um convidado senta em cima de um sistema operacional. Em um hipervisor tipo 1, a plataforma de virtualização fica acima do hardware. É porque o VMWare Player está em um Hypervisor Tipo 2 que será executado mais lentamente do que algo em um Tipo 1. No entanto, o VMWare Player oferece a capacidade de personalizar seus requisitos de hardware para sua VM. Portanto, se você tiver um sistema com um processador quad core com 4 GB de Ram, você pode oferecer 1 ou 2 núcleos e 2 GB de RAM (mínimo de req para Windows x64) para ter uma VM que funcione eficientemente.

Por exemplo, eu tenho um XPS 14z e tenho o Windows 7 nele. Eu corro um Windows 7 VM também - eu aloquei 2GB de RAM e 2 núcleos de processador (dos meus 4).

Então, quando eu executo programas nele (Notepad + +, Transwiz, Outlook, Word, Excel etc) não há nenhuma desaceleração perceptível. Eu nunca tentei rodar softwares intensos (Photoshop, etc). Então, dependendo do que você está usando - um hipervisor tipo 2 pode ou não atender às suas necessidades. Se você quiser usá-lo para jogos, vai depender do jogo. Eu executei alguns jogos Steam nele e não tive nenhum problema (eu RDP da minha máquina Fedora para minha VM às vezes), mas isso realmente depende dos requisitos do jogo. Para jogos em todos os sentidos, eu não usaria uma VM para fazer isso. Jogo na minha máquina W7 e depois uso uma VM (Fedora, na verdade) para fazer outras coisas. Você quer que os aplicativos mais intensivos tenham primeiro acesso ao hardware.


6





Então eu instalei o Windows 7 no Linux Mint 12 através do VMWare Player. A renderização de vídeo do Windows 7 dentro do Linux Mint é pior que o Windows 7 como sistema operacional principal. Eu não configurei nada e não sei se há algo para configurar para tornar a renderização de vídeo dos arquivos avi melhor.

Eu achei a velocidade de execução de aplicativos para ser rápido na minha máquina de memória de 8GB. Isso não foi um problema. Dito isso, eu não tentei nada de super intensivo de memória como vídeo ou edição de fotos. Apenas aplicativos regulares do Office.


1



Você sempre pode alocar mais CPU, RAM ou memória de vídeo para sua máquina virtual. - iglvzx


O problema com a tecnologia VM é que ela não pode endereçar sua memória física da mesma maneira se você estivesse executando um sistema operacional real usando essa memória. Uma imagem de VM usa endereçamento de memória lógica se ela for executada usando o mesmo espaço de endereçamento físico que você não conseguiria executar os dois sistemas operacionais ao mesmo tempo. Embora as VMs modernas tenham percorrido um longo caminho, você poderia até dizer que jogos com qualidade de 90% a 95%, eles ainda não têm a capacidade de executar seus jogos a toda velocidade. Que 90% -95% é destinado exclusivamente ao endereçamento lógico versus endereçamento físico da memória de seus computadores. Agora que só cobre o argumento de endereçamento / alocação de memória, o outro problema é que o Windows usa o DirectX até o momento. Não sei se nenhum software de VM, incluindo o VMware, tem suporte total para qualquer um dos DX mais recentes. Então, se usar qualquer coisa além do DX 9, você está praticamente ferrado.

O QEMU no Linux é provavelmente o melhor para jogos!


1