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

< Matando Passarinho com Tiro de Canhão >


O calcanhar de Aquiles do DOS é o gerenciamento da memória. Não que tivesse nascido errado: foi desenvolvido para o 8088, uma CPU limitada cujo universo esgotava-se nos umbrais do segundo Megabyte e era inteiramente satisfatório para a época. Porém, nos tempos do 386, que "enxerga" endereços até 4 gigabytes, um sistema operacional que somente libera 640K para programas e é irremediavelmente cego acima do primeiro megabyte é claramente inadequado. O que explica o sucesso do OS/2 e a ansiedade com que se espera por Windows NT, ambos sistemas operacionais capazes de explorar as imensas potencialidades das CPU de 32 bits. Daí não ser difícil concluir que o DOS está inexoravelmente liquidado. Então, podem preparar os funerais que o DOS está a beira da morte, certo?

Errado! Erradíssimo! Preparem-se para ver o velho DOS, com todas as suas manhas, remendos e seqüelas, rodando em muitos milhões de máquinas ainda por alguns anos. E há boas razões para isto. A primeira é a multidão de programas existentes que não exigem mais que o DOS e fazem tudo - ou quase tudo - que algumas dezenas de milhões de usuários precisam. E que, enquanto forem bem atendidos pelo DOS, não sentirão necessidade alguma de mudar de sistema operacional mesmo que troquem seus velhos XT por 386.

A segunda razão é justamente a plataforma. Nem todo o mundo tem máquina para rodar um sistema operacional de 32 bits. O OS/2 exige no mínimo um 386SX e 4Mb de memória segundo a IBM, ou pelo menos um 386DX com 8Mb segundo todos os demais usuários. E Windows NT não se contentará com menos. Pelo contrário: há rumores que exigirá ainda mais. Sem falar no HD: com menos de 100Mb, nem pensar nem em um nem em outro. Estima-se em mais de cem milhões as máquinas em operação em todo o mundo que não são capazes de rodar um sistema destes. Evidentemente muitas delas logo serão substituídas por plataformas mais poderosas. Mas não se pode desprezar a minoria remanescente: corresponde a dezenas de milhões de máquinas em perfeitas condições de uso. O que fazer com elas? Defenestrá-las somente porque apareceram sistemas operacionais melhores que o DOS? Por que, se são perfeitamente adequadas para os serviços que delas se exigem? Será que os milhões de micros em todo o mundo usados apenas para rodar um editor de textos e uma ou outra planilha ocasional precisam ser substituídos por 386? Eu entendo que não há sentido em se comprar hoje um 286. XT, nem pensar. Mas isto não é razão para jogar fora os existentes. E será nestas máquinas que o DOS se refugiará ainda por muito tempo.

A terceira razão que garantirá a sobrevivência do DOS não é menos importante: sua inegável evolução. É verdade que a própria concepção do sistema impedia que melhorias essenciais fossem implementadas. Por exemplo: caso se rompesse o limite de 640K para programas, perder-se-iam todos os aplicativos que acessam diretamente a memória de vídeo, inamovivelmente ancorada justamente ali no endereço 640K. E, com a proverbial lerdeza dos serviços de vídeo, todo aplicativo que pretendesse obter um desempenho decente estava inapelavelmente condenado a escrever diretamente na memória de vídeo. Mas, considerando-se as brutais limitações inerentes à própria estrutura do sistema, ao comparar a versão 5.0 do DOS com a 1.0, não se pode deixar de admirar o engenho e arte com que alguns milagres foram engendrados. Sobretudo e principalmente, como não poderia deixar de ser, no que toca ao gerenciamento de memória, o velho e dolorido calcanhar de Aquiles do DOS.

Começando pela memória expandida. Algo simples, mas de grande engenhosidade: um driver usa um segmento livre (ou "moldura") de 64K no trecho de memória entre 640K e 1Mb, que o DOS "enxerga", para mostrar o que está escrito em endereços que o sistema não alcança. Como estes últimos trechos são gerenciados pelo driver, o DOS se deixa docemente enganar e lê o que está a seu alcance. Precisou de uma informação situada fora da moldura? O driver troca rapidamente sem que o DOS perceba e vai em frente. Com este expediente se consegue aumentar extraordinariamente a capacidade de armazenar dados na memória até mesmo dos modestos XT.

Depois, com o advento do 286, já capaz de "enxergar" um campo contínuo de 16Mb, veio a memória estendida. Que o DOS ainda não poderia usar para programas, mas ensejava algumas pequenas prestidigitações. A começar pela possibilidade de nela se aninharem discos RAM, spoolers de impressoras e caches de disco. Sem falar na memória alta, ou HMA, onde se poderia carregar uma boa parte do próprio DOS. É verdade que não era grande coisa: só um segmento de 64K, situado logo acima do primeiro mega. Mas para quem já estava sufocado por falta de espaço nos 640K cá de baixo, um ganho de 10% não era de se jogar fora. E foi muitíssimo bemvindo.

Finalmente, surgiram os 386 e seus inigualáveis 32 bits (pelo menos até que o Pentium debute seus 64. Por falar nisso: êta nomezinho feio o desse processador, sô!). E trazendo fantásticas possibilidades. Entre as quais o uso de pedaços inteiros dos 384K situados entre os endereços 640K e 1Mb, os chamados blocos de memória superior ou UMB. Terreno que continuava interditado aos programas, é verdade, mas preciosíssimo para carregar residentes e drivers. Mais um alívio e tanto.

Enquanto o hardware evoluía, a turma do DOS não dormia. Pelo contrário: usando os recursos das novas CPU e verdadeiros contorcionismos eletrônicos, foram conseguindo aqui e ali arrancar pedaços de memória outrora interditados e colocá-los à disposição dos programas. Quem tem hoje um 386 pode fazer milagres e doar aos programas mais de 600K dos 640K possíveis. E, com o software adequado como Windows ou Desqview, simular multitarefa usando memória estendida ou expandida para rodar programas, algo impensável em passado relativamente recente. E tudo isto com o próprio DOS.

Mas para isto é necessário algum conhecimento. Para explorar memória estendida ou expandida, é preciso instalar os drivers correspondentes. E para carregar o DOS na HMA e o resto nos UMB, deve-se usar os comandos certos. Nada que exija doutorado em informática: umas poucas linhas no Config.Sys e Autoexec.Bat e está tudo resolvido. Basta saber quais, como e onde.

Pois bem: em minhas andanças nas máquinas alheias e, sobretudo, em algumas das aflitas cartas que aportam por estas bandas, constatei que há muita gente por aí usando garbosos 386 como se fossem XT. Por pura falta de conhecimento. O que, convenhamos, é um brutal desperdício de poder de fogo, como matar passarinho com tiro de canhão. Então, para evitar este desatino, vamos começar uma série explicando justamente os quais, como e onde lá de cima.

Esperem que ela chega. No ano que vem, naturalmente.

B. Piropo