quarta-feira, 30 de junho de 2010

Inicialização de um Sistema Operacional

A função do Sistema Operacional (SO), passa pela carga e execução de programas (softwares) na memória. Bem, se pensarmos que o sistema operacional é um conjunto de programas, fica a pergunta "mas quem cararega o sistema operacional?". Para entender como isso funciona, basta lembrar da BIOS (Basic Input Output System - Sistema Básico de Entrada/Saída). Dentro da BIOS, que fica instalado na placa mãe do computador, possui um software (programa) denominado gerenciador de partida, é ele quem vai dar a caraga no sistema operacional. Por se tratar de um programa configurável, através do gerenciador de partida podemso controlar todo o processo de inicialização do SO, desde o momento que se liga a máquina até a solicitação de login.
Iniciando o Sistema
Assim como existem vários tipos de hardware, existem também vários tipos de programas de boot, isso significa que todo o processo depende do hardware em uso não do sistema operacional, que no nosso caso trabalhamos com a tecnologia de arquiteturas x86 da Intel, onde, ao inicializar o sistema, será executado uma operação chamada Flash RAM. O processo é executado em uma area de memória, mais precisamente no endereço 0xFFFF0, por isso quando essa porção da memória está com defeito, não se inicia o sistema operacional. A primeira coisa que a BIOS executa é o Power On Self Test (POST), cuja função principal é a verificação do hardware e a enumeração e inicialização dos dispositivos locais. A seguir será então, a BIOS procura por dispositivos ativos e válidos na CMOS (boot device), para, assim, inicializar o sistema operacional. Os dispositivos de boot podem ser disquetes (muito raro hoje em dia), discos rígidos (HD's), flash drivers (Pendrive), dispositivos de rede, e outros. No que se refere ao Linux, ele é inicializado a partir de um disco rígido, onde o MBR (Master Boot Record - "Registro de Inicialização Mestre") armazena o gerenciador de partida (ou gerenciador de boot). Observe na Figura abaixo como é a sequencia de inicialização do sistema.


Sequência de boot

De forma simplificada observe como é feita a inicialização do Linux:

1. A BIOS executa o código do MBR: A BIOS (programa armazenado na memória ROM) é o primeiro programa a ser executado. Logo após ser carregado, ele executa um gerenciador de partida que sempre possui uma localização padrão: o primeiro setor do primeiro cilindro do seu dispositivo de boot, conhecido como MBR.
2. O código do MBR carrega o setor de boot : O código da MBR executa o código de um setor de boot que pode ser de qualquer SO específico que, por sua vez, pode estar localizado na mesma partição do MBR ou em outra partição do disco (o próprio MBR é um tipo de setor de boot). Por isso, uma das funções mais importantes do MBR é permitir escolher um setor de boot específico de vários outros disponíveis nas partições do disco rígido.
Esse é conhecido como primeiro estágio do gerenciador de boot.
3. O código do setor de boot carrega o SO: O código do setor de boot tem a função de carregar um SO específico da partição em que está instalado. Cada SO possui características  próprias de boot. Esse também é conhecido como segundo estágio do gerenciador de boot.
4. O SO inicializa-se: A inicialização do SO realiza vários procedimentos necessários para alcançar o pleno funcionamento. Vejamos alguns dos principais: reconhecimento de hardware pelo kernel, carga  os drivers de dispositivo, verificação da integridade dos discos, configuração regional (idioma, formatos de data e hora), configuração da rede, inicialização dos serviços e disponibilização de terminais virtuais - getty (tela de login).