sexta-feira, 17 de dezembro de 2010

Ainda a memória virtual

Devido ao interesse que alguns leitores demonstraram pela memória virtual, resolvi acrescentar mais algumas informações conceituais sobre o assunto, já que o mote da postagem do último dia 14 era apenas mostrar como configurar o Registro para “limpar” automaticamente esse importante arquivo do sistema.
Sem descer a detalhes técnicos que mais complicariam do que explicariam a coisa toda, vale lembrar que esse recurso foi implementado pela Intel em seus processadores 386, juntamente com a capacidade de operação tanto no modo real quando no protegido, sendo que este último trouxe o benefício da “multitarefa” – isto é, a execução simultânea de vários aplicativos. No entanto, embora fosse um aprimoramento louvável, logo se notou que a multitarefa levava a RAM a se esgotar rapidamente e obrigava o usuário a encerrar alguns programas para poder continuar trabalhando com os demais.
Em vista disso, considerando que o MB de memória custava os olhos da cara naquela época, a solução foi criar um arquivo temporário no disco rígido (Swap File, ou arquivo de troca) para funcionar como uma extensão da RAM. Assim, sempre que vários programas fossem executados simultaneamente e memória física do sistema se tornasse insuficiente para comportá-los, o que não era indispensável naquele instante seria despachado para essa “memória virtual” (e trazido de volta quando necessário).
Nas primeiras versões do Windows, esse arquivo de paginação era configurado manualmente, deixando o usuário entre a cruz e a caldeirinha: se reservasse uma porção grande do disco para esse fim, ele ficaria com pouco espaço para a instalação de programas e armazenamento de arquivos; se o limitasse a uns poucos MB, não poderia vários programas ao mesmo tempo e trabalhar com arquivos volumosos.
Mais adiante, com a adoção do swap file dinâmico e o gerenciamento mais racional dos recursos do sistema, os arquivos mais acessados passaram a ser mantidos na RAM – ou na memória cache, conforme o caso – e os menos acessados, despachados para o arquivo de troca.

Observação: Para minimizar os constantes travamentos que testavam a paciência dos usuários do Windows 3x – causados geralmente por programas mal-comportados que invadiam áreas de memória necessárias ao funcionamento do sistema e de outros aplicativos – as versões 9x/ME passaram a utilizar a multitarefa semi-preemptiva, que isola as áreas de memória ocupadas pelos aplicativos e garante maior estabilidade ao sistema. No XP, que é baseado no kernel do Windows NT, a multitarefa preemptiva completa garante prioridade às tarefas executadas pelo sistema em relação a qualquer outro aplicativo; se algum programa trava ou tenta invadir uma área de memória que não lhe tenha sido designada, ele simplesmente é fechado e, pelo menos em tese, os demaia continuam rodando sem problemas.

Embora seja um recurso valioso, a memória virtual é na verdade um paliativo, até porque o disco rígido é milhares de vezes mais lento do que a já relativamente lenta memória RAM; quanto mais o sistema recorre ao swap, mais lento ele se torna, especialmente se houver pouco espaço disponível no HD e se os dados estiverem muito fragmentados.

Observação: Há quem recomende configurar manualmente a memória virtual e estabelecer valores idênticos para os campos “mínimo” e “máximo” (cerca de uma vez e meia a quantidade de RAM instalada) ou usar programinhas de terceiros como o FREE RAM XP PRO, que permite liberar espaço sempre que necessário, tanto automaticamente quanto por iniciativa do usuário. No entanto, o gerenciamento de memória no XP é mais eficiente do que nas versões 9x/ME do Windows, e se você dispuser de uma quantidade razoável de memória física (entre 1 e 2 GB), não deverá enfrentar grandes problemas.

Com o barateamento do hardware, abastecer o PC com fartura de RAM ainda é a melhor solução, conquanto o gerenciamento da memória seja um compromisso conjunto do processador e do sistema operacional. Processadores de 32 Bits são limitados pelo VAS (Virtual Address Space) a endereçar algo entre 3 e 3,5 GB de RAM, de modo que não compensa pagar mais caro por um PC com mais de 4 GB de memória física, a não ser que ele integre uma CPU de 64 Bits e você instale uma versão do Windows com suporte a essa tecnologia, evidentemente.
Vale mencionar também que a quantidade de RAM que um sistema de 32 bits é capaz de endereçar é repartida entre todos os programas abertos, mas, no caso do Windows, cada programa sozinho não pode usar mais do que 2 GB, já que tanto o sistema quanto os aplicativos gerenciam a memória utilizando endereços de 32 bits. Isso representa uma limitação importante em alguns games e aplicativos pesados – que podem exceder este limite nos momentos de maior atividade e simplesmente travar, exibindo alguma mensagem de erro genérica –, e afeta tanto quem utiliza versões de 32 bits do Windows (com mais de 2 GB de RAM) quanto quem roda programas de 32 bits sobre versões de 64 bits do Windows. Mas isso já é outra história e fica para outra vez.

E já que falamos em armazenamento de dados, vale a pena dedicar um minutinho ao vídeo a seguir (só não tente fazer isso em casa, ok?).



Pra concluir, como estamos a uma semana do Natal, lembro a todos que me mandaram correntes prometendo fortuna e dinheiro em 2010: NÃO FUNCIONOU! Por isso, em 2011, mandem o dinheiro diretamente! Ficarei muiiiito mais feliz.

Bom final de semana a todos e até segunda, se Deus quiser.