Sítio do Piropo

B. Piropo

< Trilha Zero >
Volte de onde veio
15/01/2001

< Botinas >


Em inglês, o processo de inicialização de um computador denomina-se “boot”, uma  palavra que significa “botina” e parece não fazer sentido nesse contexto. No entanto há uma razão para que ela seja usada. Para compreendê-la há que se entender que aquele procedimento contém em si mesmo uma contradição aparentemente intransponível, resultante da combinação de três fatores.

O primeiro deriva de uma constatação elementar: tudo que um computador faz é efeito de um programa – e isso inclui, necessariamente, o procedimento de inicialização. Logo, se máquina está sendo inicializada, um programa está sendo executado.

O segundo é conseqüência do fato de que programas somente podem ser executados se as instruções que o compõem estiverem alojadas na memória principal. Programas consistem em um conjunto de instruções encadeadas que são interpretadas e executadas seqüencialmente pela UCP (Unidade Central de Processamento) que deve, obrigatoriamente, lê-las uma a uma na memória principal. É verdade que o “código executável”, o conjunto de instruções que compõe um programa, pode ser armazenado em disco sob a forma de um arquivo executável. Mas este arquivo não pode ser executado diretamente do disco: é preciso antes transpô-lo para a memória principal (a isso se chama “carregar” o programa; quando você clica sobre o ícone de um programa para executá-lo, dá início a um complexo encadeamento de ações que começa com a leitura de seu código executável no disco para copiá-lo na memória).

O terceiro fator deve-se a uma característica da memória RAM (“Random Access Memory”) usada como memória principal de nossos computadores: ela é volátil. Seus circuitos dependem da eletricidade para preservar seu conteúdo e, ao se desligar o micro, a memória se esvazia completamente.

Entendeu agora a contradição? Quando a máquina é ligada a memória está “vazia”. A inicialização é feita por um programa, que só pode “rodar” se estiver na memória. E só quem pode “carregar” um programa é outro programa – que deveria então já estar na memória. Que, porém, estava vazia...

Em inglês, para se referir a algo assim, usa-se o ditado “elevar-se pelos cordões das botinas” (“pulling yourself up by the bootstraps”). A idéia é alguém se abaixar, segurar nos cordões de suas próprias botinas, puxá-los para cima e, com isso, levitar. Aparentemente é mais ou menos o que a máquina faz em seu processo de inicialização. Um procedimento que, devido ao ditado, no início da era dos computadores era conhecido por “bootstrap” e depois foi simplificado para “boot”.

É claro que não há mistério algum. A decepcionante verdade é que nem toda a memória principal consiste de memória RAM: há uma pequena parte dela formada por “chips” (circuitos integrados) de memória ROM (“Read Only Memory”, ou memória apenas de leitura). Esses chips preservam seu conteúdo quando a máquina é desligada mas em contrapartida não podem ser alterados (e, portanto, não podem ser usados no restante da memória principal, cujo conteúdo deve ser dinâmico). Neles é gravado o programa de inicialização e um conjunto de rotinas (trechos de programas) que permitem acessar o hardware. Esse conjunto denomina-se BIOS (Basic Input/Output System, ou sistema básico de entrada/saída). Quando se liga a máquina, a primeira instrução lida e executada pela CPU fica justamente em um dos endereços ocupados pela memória ROM e dá a partida no procedimento de inicialização (ou de “boot”). Esse procedimento, primeiro, testa os principais componentes da máquina (e exibe alguns resultados na tela, como por exemplo o teste da memória RAM). Depois, carrega o sistema operacional.

Ora, vimos na semana passada que o sistema operacional é um programa. Vimos hoje que programas podem estar armazenados em disco, mas não podem ser executados a partir dele. Portanto, a carga do sistema operacional consiste em ler no disco os arquivos que o compõem e transpô-los para a memória.

Ora, para isso é preciso, primeiro, saber em que disco encontrá-los (computadores podem ter diversos discos, flexíveis ou rígidos, e o sistema operacional pode estar em muitos deles – especialmente em uma máquina onde se pode escolher o sistema que se quer rodar). Depois, é necessário saber em que setores de que trilhas tais arquivos se escondem. E, pelo menos nos primeiros estágios, seja qual for o sistema operacional a ser carregado, tudo isso tem que ser feito usando apenas as limitadas rotinas do BIOS gravadas em memória ROM.

Isto sim, é um feito e tanto. Que discutiremos semana que vem.

B. Piropo