Propaganda

Atualmente, a maioria dos computadores é fornecida com uma versão de 64 bits do Windows e, geralmente, com uma quantidade mínima de RAM. Isso questiona o desempenho desses sistemas. Isso é especialmente verdade quando os usuários desejam executar o software legado de 32 bits nesses novos computadores.

O que levanta uma questão interessante. Você precisa de mais ou menos RAM Quanta RAM você realmente precisa?RAM é como memória de curto prazo. Quanto mais multitarefa, mais você precisa. Descubra quanto seu computador possui, como tirar o máximo proveito dele ou como obter mais. consulte Mais informação para executar um aplicativo de 32 bits em um Versão de 64 bits do Windows O que é computação de 64 bits?A embalagem de um computador ou hardware de computador está cheia de termos e emblemas técnicos. Um dos mais importantes é o de 64 bits. consulte Mais informação ? Nesta semana, Bruce Epper descobre.

Um leitor pergunta:

É verdade que a execução de aplicativos de 32 bits em um sistema Windows de 64 bits consome

instagram viewer
1,5 vezes mais memória em comparação com a execução do aplicativo de 32 bits em um sistema operacional Windows de 32 bits?

Resposta de Bruce:

Discutimos anteriormente os benefícios e as desvantagens de manter tudo de 64 bits em geral e algumas das efeitos de "mistura e correspondência" Como o desempenho do Windows é afetado por hardware e softwareEm teoria, o software de 32 bits poderia superar o desempenho de 64 bits, dependendo da configuração do hardware. Parece complicado? Estamos aqui para fazer sentido e ajudá-lo a obter o melhor desempenho do seu sistema. consulte Mais informação . Hoje vamos examinar como os aplicativos de 32 bits são executados nas versões de 64 bits do Windows.

Um sistema operacional Windows de 64 bits não pode executar um programa Windows de 32 bits sem ajuda adicional. Eles são muito diferentes: desde ponteiros e tipos de dados até como o sistema chama (como os programas usam os recursos do sistema operacional subjacente). Você precisa de uma maneira de torná-los compatíveis.

Entendendo o WoW64

O Windows usa o subsistema WoW64 (Windows32 no Windows64) para compensar as diferenças. Funciona efetivamente como um mini-emulador de 32 bits do Windows em sistemas x64 e um emulador de pleno direito nos sistemas Itanium (IA64).

Os sistemas IA64 requerem um emulador completo devido às diferenças nas instruções do processador e nos tamanhos de página da memória (4K em x86 e x64, 8K em IA64). Como os processadores x64 têm todas as instruções dos processadores x86 e usam o mesmo tamanho de página de memória, não é necessário um emulador completo.

Nos dois casos, o WoW64 fornece uma interface entre o kernel do Windows de 64 bits e a versão de 32 bits do ntdll.dll (isso contém uma lista dos principais Funções do kernel do Windows), interceptando chamadas do kernel e alterando-as para que possam ser processadas pelas funções nativas de 64 bits fornecidas pelo Windows núcleo.

Existem 3 arquivos DLL usados ​​nos sistemas x64 / IA64 para fazer isso: wow64cpu.dll, wow64win.dll e wow64.dll. Suas funções são abstrair as características do processador e fornecer thunks (nós os encontraremos mais tarde) no win32k.sys, que fornece a funcionalidade "window" e o ntoskrnl.exe, que contém o executivo, o kernel, o gerenciador de memória, agendador de processos (que não deve ser confundido com o agendador de tarefas acessível no Painel de Controle) e outros elementos principais do sistema operacional. sistema.

dlls carregadas

Uma conversão é uma sub-rotina (pense nelas como uma série de instruções que executam uma única tarefa) que permite que um programa execute uma sub-rotina ou função comum no sistema.

Nesse caso, ele extrai os argumentos da pilha de chamadas do programa de 32 bits, converte-os em suas contrapartes de 64 bits e faz a chamada de sistema de 64 bits. Ao retornar da chamada, ele converterá os resultados de 64 bits em 32 bits e os enviará de volta à pilha de chamadas do programa para o chamador usar.

Toda a conversão é feita no modo de usuário (que tem permissões limitadas) por dois motivos. Primeiro, ele minimiza os efeitos de bugs no código que podem resultar em uma brecha na segurança, corrupção de dados ou falha no sistema, se executados no modo kernel.

Segundo, reduz o impacto no desempenho que teria se executado no modo kernel (o modo usado pelas partes essenciais do sistema operacional) devido à sobrecarga envolvida ao alternar entre modo de usuário e modo kernel e volta.

Voltando aos sistemas Itanium, há outras diferenças importantes a serem observadas. Os sistemas IA64 usam dois arquivos adicionais. IA32exec.bin é o emulador de software x86 e o ​​Wowia32x.dll fornece a interface entre o WoW64 e o emulador de software.

Um processo de 32 bits carregará esses arquivos e a versão de 64 bits do ntdll.dll. Esses são os únicos binários de 64 bits que podem ser carregados em um processo de 32 bits antes do Windows 7. O Windows 7 e posterior também possuem outra DLL, apisetschema.dll, que será carregada em todos os processos.

explorador de processos

Quando um processo de 32 bits é iniciado, ele carrega o Wow64.dll, que por sua vez carrega a versão de 32 bits do ntdll.dll e quaisquer DLLs de 32 bits necessárias de % systemroot% \ SysWOW64. A maioria desses arquivos é idêntica aos binários em um sistema de 32 bits, embora alguns tenham sido reescritos para se comportarem de maneira diferente no WOW64.

Olhando para a lista de DLLs carregadas, podemos ver que existem 9 DLLs carregadas no processo no Win64 que não existem para o sistema Win32.

Agora, você pode ficar tentado a olhar para os tamanhos dos arquivos, adicioná-los e usá-los como base para a quantidade de memória extra que está sendo usada, mas você acabaria com resultados imprecisos. Esses arquivos, por natureza, foram projetados para serem componentes compartilhados e, como resultado, o primeiro arquivo a exigir uma DLL o carrega na memória.

Programas subseqüentes que exigem a mesma DLL não carregam o componente inteiro na memória. Eles obtêm um ponteiro para o componente já carregado e alocam RAM para os elementos adicionais carregados no processo.

Nossa configuração de teste

Para ver o que está acontecendo, configurei duas máquinas virtuais executando o Windows 7 Ultimate com 2 GB de RAM alocada para cada uma. Um deles é a versão de 32 bits e o outro é de 64 bits. Ambos passaram pelo mesmo processo de instalação e correção.

Depois que os dois sistemas foram corrigidos, desativei o arquivo de troca nos dois para obter uma melhor imagem do uso da memória, garantindo que a RAM não pudesse ser paginada em disco. Uma vez concluído, o LibreOffice 5.0.3.2 foi instalado.

lo-calc

Uma cópia de Sysinternals Process Explorer Process Explorer - A substituição mais poderosa do Gerenciador de tarefas [Windows]Vamos ser honestos, o Gerenciador de tarefas do Windows não é ótimo para entender e gerenciar os processos em execução no seu computador. Mesmo no Windows 8, onde é muito aprimorado, o gerenciador de tarefas não pode chegar perto do ... consulte Mais informação também foi colocado nas duas máquinas. Essa é a ferramenta que eu usei para coletar informações de uso de memória. A configuração da coluna padrão foi alterada para que eu pudesse ver o uso do Conjunto de Trabalho e do WS Private.

Esses números do conjunto de trabalho refletem a quantidade de RAM usada pelos programas. Isso complicou um pouco ainda mais, refletindo a quantidade de memória usada pelas bibliotecas compartilhadas, mesmo que elas já tenham sido carregadas por outro processo. Por esse motivo, se você adicionar a coluna inteira, é possível acabar com um total maior que a RAM instalada. O conjunto de trabalho ainda é o melhor medidor de exatamente quanta memória é necessária para um processo.

Os processos que estamos examinando também não estão sozinhos. Os vários programas do LibreOffice iniciam outro processo, o soffice.exe, que executará outro processo, o soffice.bin. Precisamos observar os totais dos três processos para ver o uso efetivo da memória de cada programa.

Para o teste inicial, eu simplesmente abri o Writer, Calc e Impress individualmente para verificar a quantidade de memória que eles consomem sem que nenhum dado seja carregado e os exportei do Process Explorer. Com o Calc e o Impress, eu abri um arquivo .xls de 3,7 MB e um arquivo .pptx de 3,9 MB, respectivamente, e registrei o novo uso de memória. Os resultados podem ser vistos na tabela abaixo. Todos os dados estão em KB.

uso de memória

A grande surpresa ocorreu com o Impress. Sem um documento, ele estava usando 4,1% a mais de RAM no sistema de 64 bits e 9,9% Menos com o documento carregado. Desenterrei algumas outras apresentações e tive resultados semelhantes com todas elas. O sistema de 64 bits acabou usando menos RAM que o sistema de 32 bits.

Portanto, as versões de 64 bits do Windows exigem mais RAM do que as de 32 bits ao executar aplicativos de 32 bits? Em geral, sim.

Mas você precisa atualizar sua RAM? Provavelmente não. A diferença realmente não é tão grande. Certamente não é 1,5 vezes diferente.

Bruce brinca com eletrônica desde os anos 70, computadores desde o início dos anos 80 e responde com precisão a perguntas sobre tecnologia que ele não usou nem viu o tempo todo. Ele também se irrita ao tentar tocar violão.