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

< As Máquinas Virtuais >


Programas são programas, diria o Conselheiro Acácio com ar grave. E máquinas são máquinas, sabemos todos. Como disse o aflito cavalheiro que caiu do vigésimo andar ao passar pelo terceiro, até aqui tudo bem. Mas alguma vez lhe ocorreu indagar como o mesmo programa roda de forma idêntica em máquinas tão diferentes como o humilde XT do escritório e o hiper super ultra 486 do primo do cunhada daquela tia rica? Pois é o que vamos ver hoje. Mas precisamos antes discutir a hierarquia que permeia a aparente desordem do interior da máquina.

Pairando sobre todo o conjunto, soberano, O Programa - ente para a execução do qual, afinal, a máquina foi concebida. É a ele que nos dirigimos, solicitando seus préstimos através do teclado, mouse, ou seja que periférico estivermos usando para entrada de dados. E é ele quem nos fornece o resultado final, desde o cálculo da folha de pagamento de uma mega-empresa, incluindo impressão de contra-cheques e relatórios resumo, até aquele pouso perfeito no Nimitz pilotando o F-16 do Flight Simulator. E reina O Programa tão altivo que um desavisado micreiro pode até pensar que além dele nada mais há.

Porém, mais abaixo, sempre atento, existe o DOS. Cada acesso a disco, cada mudança de tela, cada bip é imediata e sorrateiramente providenciado. Tão pronta e silenciosamente que nós, incautos usuários, nem ao menos nos apercebemos das artes do DOS e continuamos a creditar tais maravilhas aO Programa.

Mas, abaixo ainda do DOS, bem junto as entranhas da máquina, jaz o último e mais injustiçado dentre os servidores: o BIOS. Quase sempre esquecido por jamais aparecer em público, é ele quem mais se esforça em permanente azáfama. Pois tudo, mas tudo mesmo, que sua máquina faz é produto do trabalho deste humilde e incansável serviçal. Sem ele, tanto o DOS quanto o Programa seriam incapazes de se comunicar com a Máquina. É ele quem se encarrega disso. Que sabe suas manhas, seus mistérios, seus segredos. Que conhece os caminhos nos recônditos recessos da última placa controladora, do derradeiro banco de memória, do mais escondido circuito integrado. E faz com que ela mansamente atenda aos caprichos do Programa.

A coisa toda, então, parece uma cebola com quatro camadas. Externamente, a única que o usuário percebe: o programa. Abaixo, e a ele atendendo com seus serviços, o DOS. Mais abaixo ainda, servindo ao DOS, o BIOS. E no âmago de tudo, a máquina. O usuário vê o programa que vê o DOS que vê o BIOS que vê a máquina. E todos são felizes para sempre.

Nestes dez anos de vida do padrão PC, o micro pessoal evoluiu extraordinariamente. No entanto, os velhos programas continuam rodando. Pois, a cada evolução da máquina, o BIOS muda, acrescentando serviços para explorar as novas facilidades, mas mantendo os antigos inalterados. O DOS, por sua vez, também evolui sem perder suas funções antigas. A isso se chama compatibilidade, um assunto que voltaremos a abordar. Por isso os programas vêem o sistema operacional sempre com a mesma "cara". Se você rodar uma antigüidade de dez anos em um super-hiper-ultra 486 de 50 MHz, ela encara a máquina como um mísero PC. O DOS mascara as diferenças, simulando uma máquina ideal na qual todos os programas podem "rodar". Isso, bem entendido, para programas "bem comportados", que usam apenas os serviços documentados do DOS. Essa máquina, que os programas "enxergam", é a misteriosa "máquina virtual".

Virtual porquê não é real. É um misto de hardware e software, o último mascarando primeiro. O DOS não deixa os programas perceberem as diferenças. Para eles, a máquina é sempre a mesma. E se você estender esse raciocínio para o BIOS, vai ver que o mesmo conceito se aplica um nível abaixo: outra "máquina virtual" é apresentada pelo BIOS ao próprio DOS. Há, portanto, duas máquinas virtuais, uma dentro da outra.

Veja porquê: quando seu programa precisa, por exemplo, exibir uma linha de texto na tela, simplesmente solicita esse serviço ao DOS. O programa vê apenas a máquina virtual mais externa, que lhe é apresentada pelo sistema operacional. A quem, por seu lado, não interessa saber em que máquina está rodando: isso é assunto do BIOS. O DOS recebe do programa o local da memória onde estão os caracteres a serem exibidos e pede ao BIOS que os ponha na tela da máquina um a um. Seja qual for a tela, seja em que máquina for. Para o DOS, máquina é o que o BIOS lhe mostra. Este, por sua vez, é programado de forma tal que, independentemente de diferenças entre circuitos, apresente ao DOS uma "máquina" sempre igual. Ele mascara as diferenças de hardware, mostrando ao DOS sempre a mesma máquina, a sua máquina virtual, a mais interna das duas.

O BIOS, coitado, não tem a quem apelar a não ser para o duro metal e volúvel silício das placas de circuito. É por isso que parte dele vem gravada em ROM. Ali não tem moleza nem padronização: sua máquina é a real mesmo. E lá vai ele, pelos esconsos meandros internos do micro, obedientemente colocar o caractere pedido no exato ponto da tela que foi solicitado.

Resumindo: o BIOS lida com a máquina real, a própria, de carne e osso - ou de metal e plástico. E "acomoda" eventuais diferenças mostrando ao DOS uma máquina ligeiramente distinta da real, a máquina virtual mais interna. O DOS por seu turno mascara diferenças entre versões mantendo os serviços anteriores, de modo a fazer os programas "pensarem" que estão rodando na máquina para a qual foram desenvolvidos. Ele apresenta aos programas uma máquina padrão, a máquina virtual mais externa. E tudo funciona na mais perfeita harmonia.

É por isso que o mesmo editor de textos roda tão bem no monitor CGA fósforo verde da maquininha que você montou com a placa mãe que veio em seu bolso da última vez que você foi se dessedentar com uma Norteña em Ciudad de Leste, quanto no 386DX com monitor VGA a cores e alta resolução daquele seu amigo que foi a DisneyWorld mês passado. Graças as artes do DOS e BIOS, para o programa, tanto faz: as máquinas são iguais. Para a saúde de sua visão é que o papo é outro...

B. Piropo