Micro Cosmo
Volte
18/12/95

< Levando em Conta as Diferenças >


Um sistema operacional, seja ele qual for, é um programa. Um programa muito especial, é verdade, mas um programa composto por uma sucessão de instruções encadeadas, como qualquer outro programa.

Adiante veremos exatamente em que consistem os sistemas operacionais e quais são suas reais funções. Por enquanto nos basta saber que sem um sistema operacional nossos micros são incapazes de executar as tarefas mais elementares. Ou seja: o micro somente “funciona” se estiver rodando um sistema operacional. Portanto, para que o micro funcione é preciso que as rotinas que compõem o sistema operacional estejam na memória. Não importa o tipo de memória: tanto faz que seja memória ROM ou RAM.

Neste ponto uma luz deve ter se acendido nas brumas de sua mente: ora, se tanto faz ROM ou RAM, porque não gravar todo o sistema operacional em ROM e enfiá-lo no interior do micro, em um chip incrustado na placa-mãe? Com isso evita-se todo esse trabalho de carregar o sistema operacional para a memória, pois estando gravado em ROM ele já estará na memória quando a máquina for ligada. E você tem razão. Tanto que há micros assim. Eu mesmo tenho um pequeno palmtop, um XT completo que pesa menos de meio quilo, com o DOS (e mais todo um programa integrado contendo um editor de textos, planilha e banco da dados) inteiramente contido em ROM. Basta ligar a máquina e ela se põe a funcionar toda fagueira sem se dar ao trabalho de transferir os arquivos do sistema operacional do disco para a memória. Mesmo porque meu pequeno palmtop nem tem disco: usa um cartão de memória capaz de simular um disco rígido e os arquivos são transferidos para ele através de um cabo ligado a outro micro.

Seria isso uma vantagem? No caso do palmtop evidentemente que sim: somente sem disco ele pode ser tão leve, caber em minha mão espalmada e ser alimentado por um par de pilhas das pequenas. Mas já no caso de meu desktop, esse mostrengo que repousa sobre minha escrivaninha, isso não seria assim tão importante: afinal, só seu monitor pesa mais de vinte quilos e não seriam as poucas gramas de um disco rígido que fariam diferença. Além do que, ler o sistema operacional do disco não é uma coisa assim tão complicada, como veremos adiante. E tem uma imensa vantagem: quando o sistema operacional evolui, basta gravar a nova versão no disco para atualizá-lo. Se ele viesse gravado em ROM seria necessário trocar um chip, o que é mais difícil e nem sempre possível (de fato, meu palmtop ainda ostenta o MS-DOS 5.0; que lhe basta, é verdade, mas mesmo que não bastasse, não poderia ser atualizado).

Na prática, o que se faz é adotar uma solução híbrida, mantendo algumas rotinas do sistema gravadas em ROM e carregando a maioria das demais na memória RAM a partir do disco rígido. E há boas razões para esse comportamento aparentemente exótico.

Se tanto a minha máquina quanto a sua são “da linha PC”, o sistema operacional deve ser capaz de fazê-las funcionar de forma idêntica. E por mais parecidas que sejam nossas máquinas, algumas diferenças sempre existem - por vezes, diferenças bastante significativas. Afinal, nossas placas-mãe provavelmente foram montadas por fabricantes diferentes e talvez nossos microprocessadores sejam de modelos diferentes. E a função do sistema operacional é justamente fazer funcionar de maneira igual esses conjuntos de componentes eventualmente diferentes. Como pode ele dar conta dessas diferenças?

Bem, a solução é simples e engenhosa. O sistema operacional é dividido em duas partes, ou dois grandes conjuntos de rotinas. Uma, genérica e independente do hardware (ou seja, independente dos componentes da máquina) que fica armazenada no disco. Outra, cuja execução depende do hardware, fica gravada em ROM e faz parte do próprio hardware, ou seja, vem em um chip encaixado na placa. Essas rotinas gravadas em ROM integram um conjunto mais amplo de rotinas denominado BIOS (Basic Input/Output System, ou sistema básico de entrada e saída). Parte do BIOS está gravada em disco, mas a parte formada pelas rotinas que precisam levar em conta as diferenças de hardware é desenvolvida pelo fabricante do próprio hardware (afinal, é quem melhor conhece as idiossincrasias de seu produto) e fornecida juntamente com ele. Desta forma os desenvolvedores de sistemas operacionais podem se dedicar apenas às rotinas de mais alto nível, que não dependem das características físicas da máquina, enquanto os detalhes relativos às diferentes implementações de hardware ficam por conta de seus fabricantes.

A maior parte das rotinas que compõem a parte do BIOS gravada em ROM fica em um chip incrustado na placa-mãe. O mesmo chip onde vêm gravadas as rotinas do POST, um chip de memória que ocupa um conjunto de endereços perfeitamente conhecidos. Por isto o sistema operacional, depois de carregado, saberá perfeitamente onde procurar pelas rotinas ali gravadas (afinal, elas farão parte do sistema operacional).

Mas vamos supor que você tenha agregado um novo componente à sua máquina. Por exemplo, uma placa de som. O sistema operacional terá que saber lidar com ela (o sistema operacional tem que saber lidar com tudo que é incorporado à máquina, seja lá o que for, já que é ele que controla todo o sistema). É claro que muitas das rotinas genéricas de controle de placas de som podem ser incorporadas à parte do sistema operacional que é fornecida em disco. Mas sempre haverá algumas rotinas específicas da sua placa de som que podem ser diferentes das usadas pela minha.

Como lidar com estas diferenças será nosso assunto da semana que vem.

B. Piropo