Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
23/01/1995

<Acessos em 32 bits >
< Parte VII: Final (Afinal...) >


Hoje vamos, afinal, discutir Windows. Mas que Windows? Até recentemente havia três. Que, do ponto de vista de gerenciamento de memória, eram bastante diferentes: Windows em modo real, em modo standard e em modo 386 avançado. O primeiro só rodava em modo real. Existiu para manter compatibilidade com o 8086, ou seja, para permitir que Windows rodasse nos velhos XT, dos quais havia muitos ainda quando Windows 3.0 foi lançado em 1990. Morreu com o advento de Windows 3.1, e já foi tarde. O segundo foi o chamado modo standard, desenvolvido para a CPU 286. Me refiro ao modo standard no pretérito porque também ele já não existe: a última versão de Windows, a 3.11, já não o suporta. E também ele já se foi em boa hora. Resta o modo 386 avançado, que como era de esperar, só roda em máquinas com CPU 386 ou superior. É o único que suporta acessos a disco e arquivos em 32 bits, portanto o único que nos interessa. Na verdade, é o único que vale a pena...

Como vocês sabem, carrega-se Windows chamando o arquivo Win.Com da linha de comando. Há quem pense que ele "é" Windows. Doce ilusão: Win.Com pouco mais faz que exibir o logo inicial de Windows e fuçar a máquina para descobrir em que modo Windows vai rodar. Se detecta uma CPU 386 ou superior e mais de 2Mb de memória, decide que Windows deve rodar no modo 386 avançado. E então carrega o arquivo Win386.Exe, a mais importante das zilhões de partes que compõem Windows.

Os principais componentes de Windows são os gerenciadores de dispositivos virtuais, ou VxDs (Virtual Device Drivers). Como esta série já está longa demais para discuti-los em detalhe, vamos considerar apenas que um VxD, como os gerenciadores de dispositivos do DOS, é uma extensão do sistema operacional: um conjunto de rotinas que permitem controlar a máquina e seus dispositivos. Os VxD de Windows rodam no modo protegido, portanto "em 32 bits". E o mais importante deles chama-se VMM (Virtual Machine Manager, ou Gerenciador da Máquina Virtual) e está contido no Win386.Exe (além de outros: examine seu arquivo System.Ini e verifique as linhas "device=" da seção [386Enh]; todo nome situado depois do sinal de "=" e precedido por um asterisco, é um dos muitos VxD contidos em Win386.Exe).

Estes VxDs fazem todo o serviço braçal de Windows, inclusive o de DOS Extender, além de gerenciar multitarefa. Andrew Schulman, em seu excelente livro "Unauthorized Windows 95" (indispensável para quem pretende conhecer Windows "por dentro" e tem estômago para devorar dezenas de páginas em código assembly e C), considera Win386.Exe pouco mais que um formidável gerenciador de memória: além do VMM, ele contém ainda V86mmgr, o VxD responsável pelo gerenciamento das máquinas virtuais onde rodam os programas DOS no modo 86 virtual,.

Neste ponto, cabe relembrar que o que chamamos de "acessos a disco" são serviços da parte do sistema operacional conhecida como BIOS, prestados através da interrupção 13h. E "acesso a arquivos" são serviços da interrupção 21h do DOS.

O modo 386 avançado de Windows foi introduzido com a versão 3.0. Nesta versão os acessos a disco e arquivos, solicitados tanto pelos programas Windows quanto pelos programas DOS que rodam sob Windows, eram interceptados pelo DOS Extender, que passava a CPU para o modo 86 virtual e os encaminhava ao DOS. Portanto, os serviços das Int 13h e 21h eram prestados pelo próprio DOS que, embora rodando no modo 86 virtual, não deixava de ser o DOS. Eram, então, acessos "em 16 bits".

A partir da versão 3.1, Windows introduziu, opcionalmente, o "acesso a disco em 32 bits". O que vem a ser isso? Simples: quando o 32BDA está habilitado, sempre que o DOS Extender intercepta uma solicitação de serviço de acesso a disco da Int 13h, ao invés de repassá-la ao código do DOS no modo 86 virtual, a repassa a um VxD que a atende diretamente. Ou seja: a partir da versão 3.1, Windows incorporou o código necessário para executar em modo protegido ("em 32 bits") os serviços de acesso a disco prestados pela Int 13h do DOS, e já não precisa recorrer ao DOS para prestá-los.

Com a versão 3.11, Windows deu um passo adiante e introduziu, ainda opcionalmente, o "acesso a arquivos em 32 bits". Que, como você já percebeu, é semelhante ao 32BDA, mas se refere aos serviços de acesso a arquivos da Int 21h. Ou seja: quando o 32BFA é habilitado, as solicitações de serviços de acesso a arquivos da Int 21h são interceptadas e tratadas inteiramente pelos VxD de Windows em modo protegido, portanto "em 32 bits". Na verdade, o 32BFA é um portentoso conjunto de VxDs que vão desde um sistema de acesso a arquivos totalmente independente do DOS (Ifsmgr.386), um cache de disco (Vcache.386), um compartilhador de arquivos (Vshare.386), até uma nova tabela de alocação de arquivos (Vfat.386). Ifsmgr.386, Vcache.386, Vshare.386 e Vfat.386 são gerenciadores de arquivos virtuais (VxDs) carregados sempre que o 32BFA é habilitado (habilite-o e veja os nomes desses VxDs no arquivo System.Ini, que informa a Windows o que carregar durante a inicialização).

Com os acessos a disco e arquivo (ou seja, serviços das Int 13h e 21h do DOS) atendidos inteiramente por Windows em modo protegido, a Microsoft deu mais um passo para transformar Windows em um sistema operacional: Windows depende cada vez menos do DOS. Mas esse ponto não é o importante. Importante mesmo, para o usuário, é o aumento da eficácia. E habilitando 32BDA e 32BFA o sistema fica muito mais rápido. Nem precisa medir: a diferença é facilmente perceptível no uso diário.

Mas se é tão melhor, porque é opcional? Bem, é que eventualmente surgem problemas de compatibilidade, especialmente com as controladoras de disco mais antigas. Então, teste: se sua versão de Windows suportar 32BDA/32BFA, habilite-os. Se tudo correr bem, mantenha-os habilitados. Se não, é só desabilitar.

Agora, afinal, só falta explicar como habilitá-los, já que, por alguma razão, eles estão um bocado escondidos. Mas sempre dá para achá-los: execute um clique duplo no ícone "386 Enhanced", escondido no Control Panel. Clique no botão "Virtual Memory" e verifique na janela que então se abre o que consta na caixa "Disk Status". Se os acessos a disco e a arquivo em 32 bits não estiverem habilitados, clique no botão "Change" e habilite-os, assinalando suas caixas no pé da janela que então se abre.

Há algumas restrições. Por exemplo: o acesso a arquivos em 32 bits não pode ser habilitado quando se usa um arquivo de troca (swap file) temporário. Mas se você tentar qualquer coisa impossível, Windows emite uma mensagem de erro e não aceita. E se, mesmo assim, depois que você habilitou 32BDA ou 32BFA, Windows se recusa a carregar, não desespere: Win /D:C carrega Windows com 32BFA desabilitado e Win /D:F carrega Windows com 32BDA desabilitado. Se deu problema, carregue Windows com estes parâmetros, volte ao Control Panel e desfaça as modificações. E boa sorte.

B. Piropo