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

< LENDO ARQUIVOS EM DISCO >


Como vimos, as ações necessárias á leitura de um arquivo em disco envolve quatro diferentes programas: o aplicativo que solicita a leitura, o sistema operacional, o BIOS e o código executável contido na memória ROM da placa controladora dos drives de disquetes.

O aplicativo não necessita de maiores informações que a especificação completa do arquivo, ou seja: a designação do drive (e, eventualmente, da via de diretório) e o nome e extensão do arquivo. Para ele não faz a menor diferença em que tipo de disco o arquivo está armazenado: simplesmente recebe estas informações do usuário e as repassa ao sistema operacional. Que sai a campo para providenciar a leitura do arquivo.

A primeira ação do sistema operacional ao receber uma solicitação deste tipo é verificar se o drive em questão existe. E note que "existir", para o sistema operacional, tem um sentido próprio: todo drive lógico "existe", mesmo que não corresponda a um drive físico real, instalado na sua máquina. Por exemplo: se você usou o comando "subst" para fazer com que um determinado diretório simule, digamos, o drive "F", do ponto de vista do sistema operacional este drive "existe".

Para saber se o drive existe, o sistema operacional consulta uma região da memória onde estão armazenadas as informações sobre todos os dispositivos lógicos conectados. Alguns destes dispositivos lógicos não correspondem a dispositivos físicos: o exemplo típico, que nós já conhecemos, é um drive lógico criado com o comando "subst". Outros, porém, têm sua contrapartida física: correspondem, por exemplo, aos drives efetivamente ligados à máquina. Você já reparou que toda a vez que o micro é ligado as luzes dos drives acendem? Isto é parte do POST, ou auto-teste de partida, que já foi discutido detalhadamente. Ele é a primeira coisa que a máquina faz ao ser ligada, e uma de suas tarefas é acionar um a um todos os periféricos, verificar do que se trata e, caso os reconheça, armazenar suas características naquela região da memória e colocá-las á disposição do sistema operacional para consultas futuras. Guarde na memória (na sua mesmo, não na da máquina) as palavras "caso os reconheça" logo ali atrás. Ela exercerá um papel crucial mais adiante.

Constatada a existência do drive, o sistema operacional vai verificar se de fato há um arquivo com aquele nome no diretório especificado. Para isto ele precisa acessar o disco e ler seu diretório. E é a partir deste ponto que o tipo de disco começa a fazer diferença: é preciso que o sistema operacional seja capaz de "reconhecer" o drive, ou seja, que disponha das informações sobre sua capacidade, número de trilhas e de setores, localização do diretório e coisas que tais. Somente se estes dados forem conhecidos pelo sistema operacional ele é capaz de ler o diretório e verificar se o arquivo solicitado lá se encontra.

Localizado o arquivo, o sistema operacional consulta o diretório e a tabela de alocação de arquivos (FAT) para saber que setores do disco ele ocupa. E sua ação pára aí: ele não pode seguir adiante porque não é capaz de lidar com o hardware. Então apenas repassa os dados e solicita ao BIOS que o faça. Pois é o BIOS que se encarrega do trabalho sujo de lidar com os circuitos e componentes do micro e acionar diretamente o hardware.

Recebidos os dados sobre o arquivo, para que seu conteúdo possa ser lido para a memória o BIOS precisa saber exatamente onde, fisicamente, ele está armazenado: se o disco for, por exemplo, um disco RAM, as informações serão lidas de um outro local da própria memória, nos trechos que simulam os setores do disco RAM. Se for um disco rígido, ele localiza os setores correspondentes e solicita à placa controladora do winchester que os leia. E o mesmo ocorre no caso de um disquete. Portanto, para que a leitura seja feita, é necessário que o BIOS "reconheça" o disco onde o arquivo está gravado, ou seja, disponha das informações sobre número de faces, trilhas por face, setores por trilha e bytes por setor. O BIOS, você sabe, é uma coisa híbrida: parte de seu código é carregada na memória juntamente com o sistema operacional durante a partida da máquina, parte reside gravada em ROM na placa mãe. A parte gravada em ROM contem o código mais dependente do hardware. Portanto, é na ROM que estão as informações sobre os tipos de drive que a máquina é capaz de reconhecer.

Se o BIOS reconhece o disco, repassa para a placa controladora a localização dos setores onde o arquivo está armazenado e solicita que ela os leia. Se algum dia você já abriu seu micro, deve ter reparado que os drives são ligados a uma placa por um cabo grosso e chato, como certas pessoas. Esta placa, espetada em um dos slots do micro, é a controladora dos drives. Nela há diversos chips. Um destes é uma memória permanente, a chamada memória ROM, onde está gravado um programa. Que contem o código necessário para a movimentação das cabeças de leitura/gravação e conversão das informações magnéticas gravadas no disco para os bits e bytes que os demais circuitos "entendem". Evidentemente, de todos os componentes da máquina, esta placa é a que mais intimamente lida com seus drives. Portanto é indispensável que o programeto gravado em ROM reconheça os tipos dos drives conectados à placa.

Pois assim é: lidas as informações pela placa controladora, elas são repassadas ao BIOS. Que as envia ao sistema operacional. Que as entrega ao programa. Que as coloca na tela do micro para você.

Pronto: agora já temos todos os dados necessários à análise do nosso problema. Que, para os que não estão lembrados, consiste na instalação de um drive de alta densidade em um micro. Para que um arquivo possa ser lido ou gravado em um destes drives é imprescindível, no mínimo, que a placa controladora dos drives contenha o código necessário para acionar o drive e tanto o BIOS quanto o sistema operacional sejam capazes de reconhecê-lo. Portanto, se sua versão do sistema operacional já dispõe deste código e seu BIOS e sua placa controladora são capazes de manejar o drive, não há problema: abra seu micro, aparafuse o drive no gabinete, encaixe nele os cabos da fonte de alimentação e da placa controladora e saia alegremente formatando, lendo e gravando seus discos de alta densidade. Porém, se apenas uma destas condições não for satisfeita, você terá problemas. Que vamos aprender a resolver logo.

B. Piropo