Resumo:
Por muito tempo, houve uma explicação aparentemente razoável para o motivo pelo qual o Windows de 32 bits só pode usar 4 GB de memória: porque os endereços de 32 bits podem representar apenas 2 ^ 32 endereços, o que representa um máximo de 4 GB de memória. Mas o engenheiro sênior da Microsoft, Raymond Chen, recentemente reexplicou esta questão histórica e apontou que esta afirmação está incompleta. Na verdade, os processadores x86 de 32 bits e o Windows há muito tempo têm a capacidade de acessar mais de 4 GB de memória física. A principal razão pela qual a Microsoft finalmente decidiu limitar a versão comum do Windows para consumidor a 4 GB foi o sério risco de compatibilidade no enorme e complexo ecossistema de drivers de hardware da época.

De uma perspectiva pura de capacidade de hardware, os processadores de 32 bits não têm acesso apenas a 4 GB de memória física. A Intel introduziu a extensão de endereço físico, também conhecida como tecnologia PAE (Physical Address Extension), já na era Pentium Pro, permitindo que processadores x86 de 32 bits usassem endereços físicos de 36 bits. Desta forma, a memória física endereçável teórica é expandida de 4 GB para 64 GB.
O PAE não altera o espaço de endereço virtual do próprio aplicativo de 32 bits. Para um programa comum de 32 bits, ele ainda vê apenas um espaço de endereço virtual de 4 GB, e o sistema operacional precisa ser responsável por gerenciar e mapear entre esse espaço de endereço virtual limitado e a memória física maior. Em outras palavras, o PAE resolve o problema de como o sistema operacional gerencia mais de 4 GB de memória física, em vez de permitir que um único programa de 32 bits obtenha repentinamente mais de 4 GB de espaço de endereço contíguo.
A Microsoft já aproveita esse recurso há muito tempo. Algumas versões de servidor do Windows Server 2003 podem usar muito mais de 4 GB de memória por meio do PAE, com a Enterprise Edition suportando até 64 GB e a Datacenter Edition suportando até 128 GB. Isso prova que "o Windows de 32 bits pode tecnicamente usar apenas 4 GB" não é preciso.
O verdadeiro problema está no driver.
Quando o PAE está ativado, o sistema pode fornecer endereços físicos além do intervalo de 32 bits para o driver de hardware. Para os drivers escritos de acordo com o ambiente tradicional de 32 bits, isso trará um problema muito perigoso: alguns drivers acreditam que o endereço físico nunca excederá 32 bits, então eles truncarão diretamente os bits altos do endereço.

Por exemplo, o Windows pode informar ao driver que um determinado dado deve ser gravado em um local de memória física além do intervalo de endereços de 4 GB, mas se o driver descartar por engano os bits altos, ele poderá acabar gravando os dados em uma área de memória completamente diferente. Isso pode não apenas fazer com que o programa seja executado de forma anormal, mas também sobrescrever outros dados, eventualmente causando danos à memória, falha do sistema ou até mesmo falha na inicialização.
A documentação técnica anterior da Microsoft também apontava que depois de ativar o PAE, o driver geralmente precisa fazer algumas modificações aparentemente pequenas, mas muito críticas. O problema era que os desenvolvedores de drivers tinham que garantir que seu código não assumisse que os endereços físicos estavam no mesmo intervalo dos endereços virtuais de 32 bits, o que acontecia com um grande número de drivers de hardware na época.
Isso é especialmente perigoso em computadores comuns. O ambiente de hardware do servidor geralmente é muito fixo. Os administradores de sistema escolherão hardware de servidor comprovado e tentarão usar os drivers padrão que acompanham o Windows. Os PCs comuns são completamente diferentes. Os usuários podem instalar uma variedade de impressoras, scanners, placas de som, placas de TV, câmeras, placas de rede e outros dispositivos de expansão. Atrás de cada dispositivo podem haver drivers escritos por diferentes fabricantes e diferentes gerações.
A Microsoft não conseguiu garantir que todos esses grandes números de drivers de terceiros pudessem lidar corretamente com endereços físicos superiores a 4 GB.
O que é ainda mais problemático é que alguns problemas não são expostos em um ambiente de memória normal com menos de 4 GB. Um driver pode funcionar bem por anos, até que um dia o sistema lhe entregue 4 GB de endereços físicos e bugs ocultos no código apareçam de repente. Se o driver truncar esse endereço, o resultado poderá ser que os dados sejam gravados no local de memória errado, causando falhas aleatórias e corrupção de dados que são extremamente difíceis de solucionar.

Portanto, a Microsoft finalmente escolheu uma solução que parecia muito conservadora, mas mais segura para os consumidores comuns: limitar ativamente o espaço de endereço físico na versão cliente Windows de 32 bits e evitar que o sistema usasse mais de 4 GB de memória física.
O Windows XP e o Windows Server 2003 SP1 são nós importantes desta política. A Microsoft modificou a camada de abstração de hardware de ambos para limitar o espaço de endereço físico a 4 GB na versão do cliente correspondente. O objetivo não é porque o processador não possa acessar endereços superiores, mas evitar que o PAE exponha drivers incompatíveis de terceiros.
Isso também explica por que o Windows Server pode usar mais de 4 GB de memória, mas o Windows para usuários comuns não.
Os administradores de servidores geralmente não conectam um scanner USB antigo comprado por mais de dez dólares em um servidor de produção, muito menos instalam um driver de terceiros de mais de dez anos atrás para usar um dispositivo eletrônico de consumo comum. Os ambientes de servidor normalmente são altamente protegidos, o hardware e os drivers usados são mais fixos e a Microsoft é capaz de testar completamente os drivers fornecidos com o sistema.
Raymond Chen explicou essa diferença de uma maneira muito direta: os administradores de servidores não instalarão apenas um driver para um dispositivo barato como os consumidores comuns, e os drivers usados em servidores geralmente foram verificados para ambientes com muitos endereços físicos.

Usuários comuns são exatamente o oposto. Os computadores de consumo podem ter drivers instalados para dezenas de dispositivos diferentes, alguns dos quais são de hardware com mais de uma década. Para a Microsoft, o risco de tornar todos esses drivers compatíveis com PAE é muito maior do que a penalidade de limitar a memória.
Na verdade, mesmo que 4 GB de memória estejam instalados no Windows de 32 bits, os usuários talvez não consigam ver os 4 GB completos. A razão é que o espaço de endereço físico abaixo de 4 GB não deve ser usado apenas para memória do sistema, mas também mapeia a memória do dispositivo de placas gráficas, placas de rede, placas de som e outros hardwares. Se o hardware ocupar parte do espaço de endereço, parte da RAM deverá ser alocada acima do limite de endereço de 4 GB.
Como resultado, em muitos computadores Windows de 32 bits com 4 GB de RAM instalada, o sistema pode acabar usando apenas cerca de 3 GB ou menos de RAM. Esta é também uma das razões fundamentais pelas quais um grande número de computadores com Windows XP tiveram o fenômeno de “4 GB instalados, mas o sistema só pode usar cerca de 3 GB”.
A Microsoft também negou especificamente uma teoria da conspiração de longa data de que a Microsoft limitou deliberadamente a memória no Windows de 32 bits para forçar os consumidores a comprar o caro Windows Server. Embora o Windows Server possa realmente usar mais memória, a Microsoft acredita que os mercados e ambientes de hardware para os dois são completamente diferentes, e o limite de 4 GB na versão cliente é principalmente para evitar problemas de compatibilidade de driver.
Além disso, se a Microsoft realmente quisesse que os usuários comuns comprassem o Windows Server para resolver as limitações de memória, o preço desta solução era obviamente ridículo. A versão mais baixa do Windows Server 2003 que suportava mais de 4 GB de memória era a Enterprise Edition, com preço de até US$ 3.999, que não tinha significado prático para os consumidores comuns.
Com a popularização gradual dos processadores e sistemas operacionais de 64 bits, esse problema acabou perdendo seu significado prático. O Windows de 64 bits tem muito mais de 4 GB de espaço de endereço, permitindo usar grandes quantidades de memória física enquanto mantém a compatibilidade. À medida que os computadores entram gradualmente na era de vários GB ou mesmo dezenas de GB ou centenas de GB de memória, a arquitetura de 32 bits eventualmente se retira do mercado convencional.
A Microsoft deixará gradualmente de promover novos sistemas que usam processadores de 32 bits a partir de 2020 e, eventualmente, cancelará completamente a versão de 32 bits na era do Windows 11. O atual documento de suporte oficial da Microsoft também afirma claramente que o Windows 11 e superior fornecem apenas versões de 64 bits.
Essa história também reflete um problema interessante: quanto mais recursos de hardware são abundantes, mais fácil é para o software se tornar "obeso". Se os PCs fossem sempre limitados a 4 GB de memória, os desenvolvedores de software talvez precisassem prestar mais atenção ao uso da memória; e à medida que a memória do computador aumenta rapidamente de 4 GB para 8 GB, 16 GB e até 64 GB, muitos aplicativos gradualmente se acostumam a consumir mais recursos.
Hoje em dia, não é incomum que alguns aplicativos ocupem facilmente centenas de MB ou até mesmo GB de memória. A Microsoft agora está trabalhando duro para manter o Windows 11 funcionando bem em computadores com 8 GB de memória, e a enorme demanda por recursos de memória por aplicativos de inteligência artificial mais uma vez conscientizou toda a indústria sobre a importância da eficiência da memória.
Portanto, embora o limite de 4 GB do Windows de 32 bits tenha finalmente se tornado história, a razão por trás disso não é tão simples como "processadores de 32 bits só podem lidar com 4 GB de memória". A verdadeira resposta é que a Microsoft se deparou com um enorme ecossistema composto por milhares de drivers de hardware de terceiros de qualidade variada. É tecnicamente possível exceder 4 GB, mas se a descoberta fizer com que um grande número de computadores de consumo travem aleatoriamente, essa capacidade poderá se tornar um fardo para o sistema operacional do cliente.
Desta perspectiva, o limite de 4 GB do Windows não é simplesmente um gargalo técnico, mas uma escolha de engenharia feita proativamente para estabilidade e compatibilidade. Na verdade, o Windows de 32 bits conseguiu ultrapassar os 4 GB por um longo tempo. No entanto, diante do ecossistema de drivers incontrolável da época, a Microsoft finalmente optou por sacrificar alguns recursos de hardware para que os usuários comuns pudessem usar os computadores de forma mais estável.
Comentários