Há muito tempo atrás, os computadores não tinham uma ROM de bootstrap. Um deles tinha uma interface direta para modificar a RAM e poderia interromper a CPU, mudar a RAM e depois reiniciar a CPU. Então, quando você reiniciou o sistema, você tinha que se certificar de que a CPU estava parada, digite seu código de boot que carregaria um bootloader de segundo estágio (2bl) de fita de papel ou algo assim, e então "desparafuse" sua CPU. >
ROM salva o dia aqui, obviamente. Quando você liga um sistema baseado em CPU x86, ele começa a executar no endereço FFFF: FFF0. Esse é um recurso de hardwired da CPU x86. A ROM precisa residir nesse endereço e, de fato, a parte superior do BIOS (geralmente a partir de E000: 0000).
O termo BIOS é um remanescente do antigo sistema operacional CP / M. A estrutura do CP / M era o ROM BIOS na camada mais baixa, o BDOS (Basic Disk Operating System) no meio e o CCP (Console Command Processor) na frente do usuário. O BIOS tinha rotinas para executar funções de baixo nível, como leitura / gravação de um setor de disco específico, leitura de uma tecla do teclado, gravação de um caractere na tela, etc. O BDOS usava funções do BIOS para implementar um sistema de arquivos e O CCP seria o shell de comando usando as funções BDOS e BIOS. A idéia era que o BIOS conteria a interface específica do hardware, e o BDOS e o CCP poderiam ser os mesmos em qualquer sistema CP / M.
O BIOS também mantém o código inicial executado pelo processador, que inicializa o hardware necessário, exibe uma tela inicial, carrega o 2bl do primeiro setor da primeira unidade de disco e o executa.
O MS-DOS 1.0, sendo praticamente uma implementação x86 do CP / M, com recursos semelhantes ao Unix do kludgy adicionados a partir da versão 2.0, foi estruturado da mesma forma. O IBM PC BIOS na época também incluía melhorias como a comutação de modo de vídeo, funções gráficas e suporte a unidades de disco rígido no AT BIOS original.
No entanto, a maioria dos programas DOS não utilizava as funções do BIOS depois de iniciarem; Eles acessaram diretamente o hardware por motivos de desempenho. Isso foi especialmente importante depois que as CPUs de 32 bits se tornaram comuns; o BIOS só funcionava a partir do modo de 16 bits mais antigo, portanto, chamá-lo do modo de 32 bits gerava uma penalidade de desempenho adicional.
Por volta de 1990, a arquitetura do PC estava começando a ser estendida e começando a incluir novas coisas como APM, PnP e PCI. Então, o BIOS estava começando a assumir funções adicionais e ficar maior. Os PCs também estavam começando a usar chipsets em vez de componentes discretos. A inicialização do chipset é algo que precisa acontecer para que a RAM e outros componentes, como o barramento PCI, possam ser usados, de modo que o código de bootstrap do BIOS seja manipulado. Por alguma razão, muitos fornecedores de chipsets não gostam de documentar como funcionam seus processos de configuração.
O APM foi manipulado pelas funções do BIOS; isto é, para desligar o sistema do sistema operacional tinha que chamar uma função APM. ACPI, o sucessor do APM, é a grande coisa que os BIOSes fazem hoje. O BIOS ACPI é responsável por criar um monte de tabelas na memória que descreve muitos componentes de hardware não plug and play. Um sistema operacional de inicialização usa isso para determinar quantos CPUs existem, quantos slots de RAM o sistema possui, se o sistema é um desktop ou laptop, quantas baterias estão instaladas, etc. O BIOS ACPI também deve ser chamado para desligar o sistema, ou colocá-lo em suspensão, etc. Não há nenhuma razão para que o código do sistema operacional não consiga lidar com as chamadas ACPI.
Na maioria das vezes, as atualizações do BIOS são para corrigir erros da ACPI, já que a ACPI é complicada e difícil, ou para introduzir um microcódigo aprimorado. Todas as CPUs modernas permitem atualizações de microcódigo e, se uma nova atualização de microcódigo for lançada, o BIOS deve ser atualizado para instalar esse novo microcódigo. É possível que um programa normal atualize o microcódigo de uma CPU.
SMI também são manipulados pelo BIOS. Tenho certeza que a maioria dos hardwares relacionados a energia térmica e energia em um PC aciona SMI's, cujas rotinas então ajustam a velocidade da ventoinha / CPU e / ou outras coisas. Outras coisas podem desencadear SMI's; confira o artigo da Wikipedia sobre o modo de gerenciamento do sistema. Mas também não há razão para que esse código não possa ser substituído pelo código do sistema operacional se as interfaces de hardware forem documentadas.
Os sistemas operacionais modernos não usam o BIOS para acesso ao hardware, exceto para eventos de energia. Alguns gerenciadores de inicialização usam a E / S de caractere do BIOS para exibir texto e E / S de disco que carregam o código de inicialização do SO.
Então, espero que isso lance alguma luz sobre o papel do BIOS, e na maior parte você está absolutamente certo sobre como funciona.