# BIOS

Um Sistema Básico de Entrada/Saída, frequentemente referido pelo acrónimo BIOS (do inglês Basic Input/Output System) e também conhecido como System BIOS, ROM BIOS ou PC BIOS, é firmware, gravado em uma memória não volátil, usado para realizar a inicialização do hardware durante o processo de inicialização (por meio do botão de inicialização da máquina) e para fornecer serviços de tempo de execução para sistemas operacionais e programas. O firmware BIOS vem pré-instalado na memória permanente da placa mãe do computador e é o primeiro software a ser executado quando se liga a máquina. O nome origina do Sistema Básico de Entrada/Saída usado no sistema operacional CP/M em 1975. Originalmente proprietário da IBM PC, o BIOS passou por engenharia reversa por empresas que buscam criar sistemas compatíveis. A interface deste sistema original serve como um padrão de facto.
O BIOS, em PCs modernos, inicializa e testa os componentes de hardware do sistema e carrega um carregador de inicialização de um dispositivo de memória em massa (não-volátil), o qual inicializa um sistema operacional. Na era do MS-DOS, a BIOS fornecia uma camada de abstração de hardware para o teclado, monitor e outros dispositivos de entrada/saída (E/S) que padronizaram uma interface para programas aplicativos e para o sistema operacional. Sistemas operacionais mais recentes não usam a BIOS após a carga, acessando, em vez disso, os componentes de hardware diretamente.
A maioria das implementações da BIOS são especificamente projetadas para trabalhar com um computador ou modelo de placa mãe particular, por meio da interface com vários dispositivos que compõem o chipset do sistema complementar. Originalmente, o firmware BIOS era armazenado em um chip ROM na placa mãe do PC. Em sistemas de computador modernos, os conteúdos do BIOS são armazenados em memória flash, desta forma ele pode ser reescrito sem remover o chip da placa mãe. Isto permite fácil atualização do firmware BIOS pelo usuário final, desta forma novos recursos podem ser adicionados ou falhas podem ser corrigidas, mas também cria uma possibilidade para o computador ser infectado com rootkits de BIOS. Além disso, uma atualização de BIOS que falha pode bloquear a placa mãe permanentemente, a menos que o sistema inclua alguma forma de backup para este caso.
A Interface de Firmware Extensível Unificada (UEFI) é um sucessor ao BIOS, objetivando resolver suas deficiências técnicas.

## História

O termo BIOS (Basic Input/Output System) foi criado por Gary Kildall e apareceu pela primeira vez no sistema operacional CP/M em 1974, descrevendo a parte específica da máquina do CP/M carregado durante o tempo de inicialização que fazia interface direta com o hardware. (Uma máquina CP/M geralmente possuía apenas um gerenciador de inicialização simples em sua ROM.)
Versões do MS-DOS, PC DOS ou DR-DOS contêm um arquivo chamado, variavelmente, de "IO.SYS", "IBMBIO.COM", "IBMBIO.SYS" ou "DRBIOS.SYS". Esse arquivo é conhecido como "BIOS do DOS" (também conhecido como "Sistema de E/S do DOS") e contém a parte específica de hardware de nível mais baixo do sistema operacional. Juntamente com o hardware básico específico, porém "BIOS de Sistema" independente de sistema operacional, que reside na ROM, ele representa o análogo ao "BIOS do CP/M".
Com a introdução das máquinas PS/2, a IBM dividiu o Sistema BIOS em porções de modo real e modo protegido. A parte em modo real era destinada a fornecer compatibilidade retroativa com sistemas operacionais existentes, como o DOS e, portanto, era denominada "CBIOS" (para BIOS de Compatibilidade), enquanto o "ABIOS" (para BIOS Avançado) fornecia novas interfaces especificamente adequadas para sistemas operacionais multitarefa como o OS/2.

## Funcionamento

Entre outras funções o papel mais importante do BIOS é o carregamento do sistema operacional. Quando o computador é ligado e o microprocessador tenta executar sua primeira instrução, e ele tem que obtê-la de algum lugar. Não é possível obter essa instrução do sistema operacional, pois esse se localiza no disco rígido, e o microprocessador não pode se comunicar com ele sem que algumas instruções o digam como fazê-lo. É o BIOS o responsável por fornecer essas instruções.

### Sequência de funcionamento

Quando o computador é ligado, o BIOS opera na seguinte sequência:
* Verifica as informações armazenadas em uma minúscula memória ROM, que se localiza em um chip fabricado com tecnologia CMOS. A memória CMOS armazena informações relativas a configuração de hardware, que podem ser alteradas de acordo as mudanças do sistema. Essas informações são usadas pelo BIOS para modificar ou complementar sua programação padrão, conforme necessário.
* POST (Power-On Self-Test ou Autoteste de Partida), que são os diagnósticos e testes realizados nos componentes físicos (Disco rígido, processador, etc). Os problemas são comunicados ao usuário por uma combinação de sons (bipes) numa determinada sequência e se possível, exibidos na tela. O manual do fabricante permite a identificação do problema descrevendo a mensagem que cada sequência de sons representa.
* Ativação de outros BIOS possivelmente presentes em dispositivos instalados no computador (ex. discos SCSI e placas de vídeo).
* Descompactação para a memória principal. Os dados, armazenados numa forma compactada, são transferidos para a memória, e só aí descompactados. Isso é feito para evitar a perda de tempo na transferência dos dados.
* Leitura dos dispositivos de armazenamento, cujos detalhes e ordem de inicialização são armazenados na CMOS. Se há um sistema operacional instalado no dispositivo, em seu primeiro sector (o Master Boot Record) estão as informações necessárias para o BIOS encontrá-la (este sector não deve exceder 512 bytes).
Existem pequenos trechos de softwares chamados de Manipuladores de Interrupção que atuam como tradutores entre os componentes de hardware e o sistema operacional. Um exemplo dessa tradução é quando é pressionada uma tecla no teclado, o evento associado ao sinal é enviado para o manipulador de interrupção do teclado que é enviado a CPU que trata e envia esse evento para o sistema operacional. Os drivers de dispositivos são outros trechos de software que identificam e atuam como interface entre os componentes básicos de hardware como o teclado, mouse, disco rígido.

## Inicialização do Computador

Ao ligar o computador, o primeiro software que você vê a ser lido é o do BIOS. Durante a sequência de inicialização (boot), o BIOS faz uma grande quantidade de operações para deixar o computador pronto a ser usado.
Depois de verificar a configuração na CMOS e carregar os manipuladores de interrupção, o BIOS determina se a placa gráfica está operacional. Em seguida, o BIOS verifica se trata de uma primeira inicialização (cold boot) ou de uma reinicialização (reboot).
Esta verifica as portas PS/2 ou portas USB à procura de um teclado ou um rato (mouse). Procura igualmente por um barramento PCI (Peripheral Component Interconnect) e, caso encontre algum, verifica todas as placas PCI instaladas. Se o BIOS encontrar algum erro durante o início (POST), haverá uma notificação ao utilizador em forma de bipes e mensagens.
Após tudo isto são apresentados detalhes sobre o sistema:
* Processador
* Unidades (drives) de disco flexível e disco rígido
* Memória
* Versão e data do BIOS

## Recursos

Na época do MS-DOS o BIOS atendia praticamente a todas as chamadas de entrada e saída E/S ou I/O (Input/Output) da máquina, atualmente a conexão é feita através da instalação de drivers e é por meio desses drivers que os sistemas operacionais tem contato direto com os hardwares.
Na maioria dos BIOS é possível especificar em qual ordem os dispositivos de armazenamento devem ser carregados. Desta forma é possível, por exemplo, carregar uma distribuição do sistema operacional Linux que funciona diretamente do CD antes do sistema operacional instalado no HD (especificando que o CD deve ser verificado antes do HD).
Alguns BIOS também permitem a escolha entre diversos sistemas operacionais instalados, mas isto geralmente é feito com um software de terceiros (boot loader).

## Atualização ou Upgrade

Na maioria das placas mãe modernas o BIOS pode ser atualizado, e os fabricantes disponibilizam arquivos para essa finalidade. A atualização pode resolver problemas de funcionamento de periféricos, ou mesmo erros da versão anterior do BIOS. A atualização altera três programas que estão dentro da memória ROM (BIOS, POST, Setup) e é uma operação de risco e requer muito cuidado para não haver danos na placa-mãe.
Há vários problemas que podem acontecer nas atualizações, alguns deles são: arquivos corrompidos, falta de informações para a solicitação do software correto, ou ainda a falta de energia elétrica. Se ocorrer algum problema o sistema poderá não iniciar, deixando a placa-mãe muitas vezes inoperante.
A atualização ou o upgrade do chip somente deve ser feito quando for realmente necessário.
Os principais fabricantes deste firmware são: American Megatrends (AMI), Award, General Software, Insyde Software, e Phoenix Technologies.
As BIOS geralmente são de código fechado e isso pode causar alguns problemas para quem se preocupa com a segurança do computador ou quer trocar sua placa wifi para outra de marca diferente (que geralmente a BIOS bloqueia). Para isso, existe o projeto libreboot, que permite a substituição de uma BIOS privativa por uma implementação de uma BIOS livre para alguns servidores, desktops e notebooks.