Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
09/09/1991

< Minhas Memórias>
<Final: Juntando as Pontas Soltas >


Ufa! Terminou afinal o longo passeio pelos recônditos e sombrios desvãos da memória. Tão longo que merece uma recapitulação para ter uma visão geral do campo de memória, esquematizado na figura ao lado. Que, para tomar um exemplo real, é uma fiel radiografia de uma de minhas máquinas, um 386 rodando DOS.

O ponto mais importante é a clara divisão no limiar de 1Mb. Tudo o que está abaixo dela é a memória baixa ou convencional - toda a que se pode ter em um XT. E o que está acima é a estendida. Mas acima até onde? Bem, depende da máquina, da placa mãe e das posses do proprietário. Em um AT-286 o limite superior teórico é de 16Mb. Mas em geral o limite prático, que depende da capacidade física de receber memória, é menor que isto. O AT-286 de maior capacidade que conheço pode receber até 8Mb, o que, para um 286, é um bocado. Já em uma máquina 386 ou 486 o limite teórico é de 4 gigabytes. Mas este é quase inatingível: tanto quanto eu saiba, o micro pessoal com maior capacidade de receber memória pode desfrutar de 64Mb na placa mãe. Mais do que o mais ávido micreiro pode usar de forma decente nos dias de hoje.

Feita a divisão mais importante, vamos às subdivisões. Começando pela única que existe na memória estendida: seu primeiro segmento que se chama Área de Memória Alta (HMA). Onde, em máquinas 286 ou 386, drivers especiais podem carregar parte do sistema operacional abrindo um bom espaço para programas na memória baixa.

Depois, as duas principais subdivisões da memória convencional: a memória para programas, de zero a 640K, e a memória reservada.

O que podemos ter na memória para programas? Na sua base, o sistema operacional e seus drivers, que ali se carregam durante o "boot". Logo acima, possivelmente, programas residentes, os TSR. A quantidade de memória ocupada pelo sistema, seus drivers e TSR é variável: depende da versão do DOS, do número de dispositivos que exigem drivers e dos residentes que foram instalados. E os programas não residentes? Bem, eles podem entrar no pedaço que sobrou nos primeiros 640K.

E o que temos na memória reservada, de 640K até 1Mb? Necessariamente três itens: o ROM BIOS, que sempre ocupa a área imediatamente abaixo de 1Mb (cujo tamanho pode variar de micro para micro), a memória de vídeo que pode ficar entre os endereços 640K e 768K (e cujo tamanho e endereço inicial também variam de acordo com a placa controladora de vídeo) e um ou outro programa em ROM: lá pelo endereço 800K é quase certo achar o programa controlador do HD. Mas repare quanto "buraco" sobrou na memória reservada que o sistema não usou!

O maior deles, de 64K, geralmente fica a partir do endereço 896K, reservado para o interpretador BASIC em ROM. É ali que o gerenciador de memória expandida costuma instalar sua "frame". Através da qual permite que o sistema operacional "espie" o conteúdo dos bancos de memória expandida. Ou mesmo da estendida de um 286 ou 386, desde que um driver a faça simular expandida.

Mas ainda assim sobraram buracos na memória reservada. São os Blocos de Memória Superior (UMB) que, em um 386 ou 486, podem ser preenchidos com drivers ou residentes, liberando preciosos bytes da memória de programas onde eles obrigatoriamente ficariam.

Talvez agora, olhando o panorama, dê para entender como nossas máquinas usam a memória sob o DOS. Ou não. Mas pelo menos enriquecemos um bocado nosso vocabulário. Experimente comentar casualmente com um novato: "Carreguei o DOS na HMA e os TSR nos UMB". E repare no olhar perplexo que você vai ganhar em troca. Interprete-o como admiração respeitosa. As demais interpretações são impublicáveis.

B. Piropo