quinta-feira, 27 de maio de 2010

Processo de Inicialização do Computador (Boot)

Boot é o termo em inglês para o processo de iniciação do computador que carrega o sistema operacional quando a máquina é ligada.

Dispositivos de iniciação do BIOS
Um dispositivo de iniciação é qualquer dispositivo que deve ser iniciado antes da carga do sistema operacional. Isto inclui os dispositivos de entrada como o teclado, dispositivos de saída como o Monitor e os dispositivos de armazenamento como pen drive, disco rígido, CD-ROM, etc.

Um caso especial de dispositivo de iniciação são os que podem carregar o sistema operacional (Em antigas máquinas PC, o drive de disquete e o disco rígido).

Em uma BIOS moderna, o usuário pode selecionar vários dispositivos para fazer a iniciação, por exemplo, Disco Rígido, SCSI, Cdrom, Zip drive, ou USB (USB-FDD, USB-ZIP, USB-CDROM, USB-HDD).

Por exemplo, podemos instalar o Microsoft Windows no primeiro disco rígido e o Linux no segundo. Alterando os parâmetros da BIOS, podemos modificar qual sistema operacional a carregar.


Primeiro estágio do sistema de iniciação
Muitos computadores podem executar apenas códigos existentes na memória de trabalho (ROM ou RAM); os sistemas operacionais modernos são normalmente armazenados em disco rígido, CD-ROM ou outros dispositivos de armazenamento. Logo que o computador é ligado, ele não tem um sistema operacional na memória. O hardware do computador não pode fazer as ações do sistema operacional, como carregar um programa do disco; assim um aparente insolúvel paradoxo é criado: para carregar o sistema operacional na memória, precisamos de um sistema operacional já carregado.

A solução para o paradoxo está na utilização de um pequeno e especial programa, chamado sistema de iniciação, boot loader ou bootstrap. Este programa não tem a completa funcionalidade de um sistema operacional, mas é especialmente construído para que seja capaz de carregar um outro programa para permitir a iniciação do sistema operacional. Freqüentemente, boot loaders de múltiplos estágios são usados, neste caso vários pequenos programas se complementam em seqüência, até que o último deles carregue o sistema operacional.

Os primeiros computadores programáveis tinham chaves no painel frontal para permitir ao operador colocar o sistema de iniciação na memória antes de iniciar a CPU. Este poderia então ler o sistema operacional de um meio de armazenamento externo como uma fita de papel.

Nos computadores modernos o processo de iniciação começa com a execução pela CPU de um programa contido na memória ROM (o BIOS do IBM PC) em um endereço predefinido (a CPU é programada para executar este programa depois de um reset automaticamente). Este programa contém funcionalidades rudimentares para procurar por dispositivos que podem conter um sistema operacional e que são, portanto, passíveis de participar de um boot. Definido o dispositivo é carregado um pequeno programa de uma seção especial deste.


Segundo estágio do sistema de iniciação
O pequeno programa normalmente não é o sistema operacional, mas apenas um segundo estágio do sistema de inicialização, assim como o Lilo ou o Grub. Ele será então capaz de carregar o sistema operacional apropriado e finalmente transferir a execução para ele. O sistema irá inicializar, e deve carregar drivers de dispositivos (device drivers) e outros programas que são necessários para a operação normal de um sistema operacional.

O processo de inicialização é considerado completo quando o computador está pronto para ser operado pelo usuário. Computadores pessoais modernos tipicamente levam cerca de um minuto para executar o processo de inicialização (deste tempo, cerca de 15 segundos são devidos a cada chamada do processo de inicialização, e o restante para carregar o sistema operacional). No entanto, sistemas mais complexos como servidores podem levar vários minutos para terminar o processo de inicialização e carregar todos os serviços. Para garantir maior disponibilidade, estes iniciam certos serviços preferencialmente antes de outros.

Muitos sistemas embutidos, ou embedded systems, podem iniciar instantaneamente - por exemplo, esperar um minuto para uma televisão ligar é inaceitável. Assim, estes sistemas têm seu sistema operacional inteiro na ROM ou na memória flash, podendo executá-lo diretamente.

Sequência de iniciação no PC
Ao iniciar o processo de iniciação, a CPU do computador pessoal executa a instrução localizada no registrador de memória FFFFFFFF0h do BIOS. Este registrador de memória corresponde a última posição de memória da BIOS. Ele contém uma instrução que faz com que a execução seja desviada para o local no BIOS onde começa o programa inicial.

Este programa executa um auto-teste (POST), que é um teste para verificar o funcionamento de diversos dispositivos no computador. Então, o BIOS busca em uma lista de dispositivos pré-configurados até encontrar um que pode ser o dispositivo de iniciação. Se não encontra este dispositivo, um erro é apresentado e o processo de iniciação termina. Se o dispositivo de iniciação é encontrado, o BIOS carrega e executa o MBR (Registro mestre de iniciação).

Em muitos casos, o MBR verifica a tabela de partições em busca de uma partição ativa. Se uma partição ativa é encontrada, o MBR carrega e executa o setor de iniciação da partição. O setor de iniciação é específico do sistema operacional, entretanto em muitos sistemas sua principal função é carregar e executar o núcleo.

Nenhum comentário: