Por que um computador deve ter um BIOS?

35

O software BIOS está embutido no PC e é o primeiro código executado por um PC quando ligado ('firmware de inicialização'). Quando o PC é inicializado, o primeiro trabalho do BIOS é o autoteste de inicialização, que inicializa e identifica dispositivos do sistema, como CPU, RAM, placa de vídeo, teclado e mouse, unidade de disco rígido, unidade de disco óptico e outro hardware. O BIOS localiza o software do carregador de inicialização mantido em um dispositivo periférico (designado como 'dispositivo de inicialização'), como um disco rígido ou um CD / DVD, e carrega e executa esse software, dando a ele o controle do PC. [2] Esse processo é conhecido como inicialização ou inicialização, abreviação de bootstrapping.

Quais requisitos determinam que um sistema de computador deve ter um BIOS instalado?

Por que o sistema operacional não pode realmente executar todo o BIOS?

Diogo
fonte
40
Por que um motor de carro precisa de uma partida? O motor não deveria ser potente o suficiente para dar partida?
Der Hochstapler
4
@OliverSalzburg isso será possível em um futuro próximo, com motores a gás sem acionadores de partida. Com injeção direta e computadores é fácil.
Moab
2
Eles já possuem motores de partida automática, mas na maioria são motores com mais de 12 cilindros ou rotativos. A maioria dos motores não pode se auto-iniciar simplesmente porque eles não podem produzir energia suficiente em um único golpe de poder para superar seu momento de inércia. Injeção direta e melhor tempo pode ajudar um pouco, mas realmente você precisa motores mais leves para aumentar a relação entre a energia gerada em um powerstroke ao momento de inércia criada pelo volante, virabrequim, engrenagens, etc.
lesa majestade
5
Na verdade, um BIOS no sentido do PC NÃO é necessário. Os computadores IBM System / 360 e / 370 (e talvez versões mais recentes) foram iniciados com uma única instrução com fio que lê um único registro de um dispositivo selecionado por discagens no console. Esse registro continha um programa de inicialização (ele tinha que caber em 80 bytes - uma placa perfurada) que carregava um programa de inicialização mais complexo, que carregava o sistema operacional do disco. Eu acho que o 'BIOS' era aquela única instrução que seria executada quando você pressionava o botão direito (chamado IPL ou carregamento inicial do programa).
precisa saber é o seguinte
2
Você está confundindo "computador" e "PC" na sua pergunta. É por isso que as respostas são confusas e às vezes contraditórias.
Rds

Respostas:

41

Um BIOS é um pedaço de código dependente de hardware armazenado na própria placa-mãe. Todas as placas-mãe diferentes precisam de um BIOS personalizado, portanto, seria impossível ter um BIOS / OS genérico all-in-one (embora o BIOS seja tecnicamente apenas um código armazenado, para que você possa escrever um sistema operacional para uma placa-mãe em particular) . Como você mencionou, o objetivo do BIOS é fazer o seguinte:

Quando o PC é inicializado, o primeiro trabalho do BIOS é o autoteste de inicialização, que inicializa e identifica dispositivos do sistema, como CPU, RAM, placa de vídeo, teclado e mouse, unidade de disco rígido, unidade de disco óptico e outro hardware.

Observe que você ainda pode iniciar um computador sem armazenamento externo - e é por isso que o BIOS é um requisito para um computador. Em outros termos, o BIOS fornece uma interface de software comum para permitir que um programa de computador armazenado se comunique com vários dispositivos de hardware conectados à placa-mãe.

Por exemplo, se eu tiver duas placas-mãe diferentes com dois controladores SATA diferentes, o BIOS permitirá que eu escreva um código que possa funcionar com ambos, sem o meu conhecimento de como a placa-mãe realmente envia comandos para o dispositivo SATA. Eu só tenho que dizer ao computador "leia o setor X deste dispositivo SATA" e o BIOS é responsável por realmente enviar esses comandos para o hardware.

Onde ele realmente obtém as informações do "setor de leitura X" é um programa armazenado no BIOS, que geralmente instrui o computador a iniciar a leitura de um gerenciador de inicialização armazenado em um local comum. Esses locais comuns são acordados por vários desenvolvedores de software e hardware, e geralmente são fornecidos ao público para permitir maior compatibilidade entre sistemas.

Depois que um nível básico de interface (novamente, interface lógica por meio de software) é estabelecido, o próprio sistema operacional cria uma interface comum com seus vários dispositivos de hardware (geralmente usando "drivers de dispositivo"), e o sistema operacional pode controlar o hardware.


Por fim, observe que o BIOS também é usado para fazer modificações nas configurações de hardware do computador e armazená-las na EEPROM integrada (para que seu computador se lembre das alterações na próxima vez em que for inicializado). No entanto, como afirmei anteriormente, uma vez carregado o sistema operacional, ele tem controle total do computador.

Isso permite que os fabricantes de placas-mãe desenvolvam software, permitindo que você faça essas alterações no sistema operacional, em vez de precisar reiniciar o BIOS. Novamente, isso depende muito de hardware e software, mas mostra que toda a interface do computador é relativa. O BIOS é exatamente o que o nome indica - um sistema básico de entrada / saída, para permitir que uma interface comum de software para um programa mais avançado ("sistema operacional") assuma o controle da máquina.

Avanço
fonte
2
Quando você inicia o computador, o BIOS está sendo executado como código de máquina no processador. Você pode pensar assim, mas não está realmente "desligado" em certo sentido - simplesmente muda para executar o sistema operacional. Quando você inicia o computador, o BIOS informa ao computador para começar a executar o código da máquina armazenado no local X. Em termos mais comuns, o BIOS apenas inicializa o hardware e direciona o computador para onde continuar executando o código.
Breakthrough
13
O multifuncional BIOS / OS NÃO é impossível. Não sei por que todo mundo aqui fica dizendo isso. Ter cada parte em dispositivos / armazenamento separados não significa que eles não fazem parte da mesma entidade lógica. Os computadores anteriores ao PC da IBM tinham o multifuncional, ou seja, o BIOS foi fabricado e desenvolvido pelo mesmo que desenvolveu o kernel do SO. De fato, as atualizações do sistema operacional às vezes incluíam atualizações do BIOS.
M0skit0
3
@Oliver Na verdade, com o ACPI, as funções do BIOS são usadas rotineiramente após a inicialização do sistema operacional.
Derobert
1
O BIOS permite que o sistema operacional (camada de software) interaja com o hardware. O BIOS e o SO servem a propósitos diferentes. São duas partes de um todo. Um não substitui o outro.
Ben Richards
1
@ Breakthrough: depende de quem fabrica o hardware;) No caso de PCs IBM, a evolução lógica era independente dos fabricantes de BIOS e SO, devido à multiplicidade de tipos de hardware. Isso não aconteceu nos velhos tempos. É por isso que o PC foi uma (felizmente, exceto por ter M $ nele sem motivo ...) que mudou todo o mercado de computação.
M0skit0
7

Seu sistema operacional está no disco rígido; se você ligar o computador, ele não começará a ler magicamente a partir desse disco rígido. É o BIOS que carrega o carregador de inicialização do disco rígido , além de fazer alguns testes e permitir que você defina determinadas configurações do BIOS.

Seu sistema operacional não pode fazer isso porque está no disco rígido e não na sua ROM.

Portanto, você precisa de um BIOS ou de uma tecnologia semelhante (mas diferente) como a EFI ...

É possível colocar parte do sistema operacional na ROM (responsável por carregar o carregador de inicialização do sistema operacional) pelo fabricante; no entanto, isso não é amplamente aplicável e existe um BIOS ou EFI disponível de qualquer maneira.

Tamara Wijsman
fonte
1
Você está misturando dois conceitos diferentes. O BIOS é independente do sistema operacional, ou seja, o BIOS pode fazer parte do sistema operacional. Por exemplo, se ele é fabricado pelo mesmo fabricante e só funciona com esse sistema operacional, como os bootstrappers do console de jogos.
M0skit0
5
"O BIOS é independente do sistema operacional, ou seja, o BIOS pode fazer parte do sistema operacional". Hã? Contradição é muito contraditória, lol.
Breakout
2
Os consoles de jogos são computadores, assim como Atari, Amiga e Macs antigos, por isso é definitivamente relevante. @ Breakthrough: isso não é contraditório. Isso significa que o BIOS não tem nada a ver com o sistema operacional e, portanto, pode fazer parte (ou não) dele.
M0skit0
@ TomWijsman Você é o único trolling aqui. Os consoles de jogos são um subconjunto de computadores. Se for possível para alguns consoles, é possível para alguns computadores. Além disso, não use negrito assim. É inapropriado.
luiscubal
1
@ TomWijsman, ele tem razão, se os consoles de jogos conseguem , os computadores também. Além disso, desde que não seja uma pergunta ou resposta, não vejo problema em estar fora de tópico. Comentários são comentários, afinal; nada mais nada menos. (Nenhum comentário sobre a questão negrito - cada um na sua em que, apesar de que as ofertas mais com a terminologia.)
Breakthrough
6

Nenhuma razão lógica real. É mais uma questão de legado e história.

  1. Não é necessário que um computador tenha um BIOS instalado. É legado do IBM PC. Embora isso tenha sido uma boa ideia

  2. Ter o sistema operacional fazendo isso realmente não mudaria nada, porque ainda faria algo como o BIOS. É claro que o sistema operacional precisaria estar em uma ROM, não em um dispositivo de E / S. O problema pode surgir para problemas de monopólio quando um construtor de SO decide tornar seu BIOS incompatível com outros SOs. Separar os fabricantes de BIOS dos sistemas operacionais melhora a liberdade sobre o software que pode ser executado.

m0skit0
fonte
1
Por que não pode funcionar como um BIOS? Dê uma explicação sobre o porquê. Você só precisa colocar o bootstrapper em uma ROM e pronto. Não pretendo tê-lo inteiramente na ROM, e mesmo assim funcionaria se a ROM fosse grande o suficiente (é claro que para executá-lo, você precisaria carregar partes na RAM, mas isso também é feito pelo BIOS atual).
M0skit0
3
Ele disse "computador", não PCs. E sim, é aplicável. De fato, foi assim antes do PC IBM (Atari, Amiga ... o BIOS faz parte do sistema operacional).
M0skit0
2
Bobo, eu costumava escrever software para computadores embarcados que não tinham BIOS ou SO, apenas código de aplicativo. Ou não estamos falando de todos os computadores, apenas daqueles em que a maioria das pessoas pensa?
jwernerny
2
Não é aplicável em larga escala? Confira quantos Ataris, Amigas e Macs existiam antes do PC.
M0skit0
2
O iPhone é um computador e não acredito que tenha um BIOS. Mesmo antes da era digital ... um computador é uma máquina programável que executa operações e gera o mesmo resultado para uma determinada entrada, certo? Um tear Jacquard é um computador e certamente não possui um BIOS (nem sequer possui um sistema operacional).
Rd #
5

É necessário algo para iniciar o sistema operacional. Se o sistema operacional caber em alguma memória não volátil, ele poderá ser iniciado diretamente, mas com sistemas operacionais com todos os recursos, como Windows, OSX ou Linux, isso não é possível.

O que é necessário é um pequeno "SO" leve que possa ser carregado na inicialização que faça as coisas básicas, como acesso à memória e ao disco, e que carregue o sistema operacional. Embora isso possa fazer parte do próprio sistema operacional e não uma entidade separada, há outros motivos pelos quais você pode querer que outro processo inicie primeiro:

  1. Atualizações - se o sistema operacional fosse corrigido assim, seria difícil atualizá-lo se fossem necessárias correções de segurança. Isso pode ser feito - as atualizações de firmware acontecem o tempo todo nos dispositivos, como roteadores etc., mas elas têm sistemas operacionais relativamente simples instalados.
  2. Flexibilidade - um computador é uma máquina de uso geral e o mesmo hardware pode executar vários sistemas operacionais. Ter um BIOS que, em seguida, carrega o sistema operacional a partir do disco significa que você pode escolher qual deles executar - você pode até ir longe, tendo vários instalados lado a lado.

O processo é conhecido como inicialização .

ChrisF
fonte
1
Então a resposta é porque temos muitos sistemas operacionais diferentes? Quero dizer, se tivermos apenas um modelo de sistema operacional para um hardware específico, eliminaremos a necessidade de um BIOS?
Diogo
1
Eu não vejo por que não é possível que a Microsoft faz uma BIOS ...
m0skit0
1
Você não precisa de todo o sistema operacional para caber na memória não volátil (que pode suportar, você só precisa de ROM: P) suficiente. Você só precisa que o bootstrapper esteja lá.
M0skit0
1
@ m0skit0 A Microsoft não pode criar um BIOS, pois precisaria criar um BIOS diferente para cada placa-mãe que deseja que seu software seja executado. :)
avanço
1
Além disso, @ChrisF, a colocação de um sistema operacional na ROM compromete todo o objetivo de um sistema operacional. Pode fazer sentido usar a ROM para executar alguns programas armazenados diretamente no processador (o que produziria um desempenho muito melhor), mas o objetivo de um sistema operacional é desaprovar explicitamente esse tipo de operação e fornecer uma interface de software comum para faça isso.
Breakthrough
4

O conceito PC BIOS deriva do CP / M, um sistema operacional popular em computadores de barramento Z-80 "S-100" de 8 bits antes do PC IBM assumir o controle.

O CP / M espera que as funções dependentes de hardware estejam em uma ROM (BIOS). Outra parte, carregada do disco pelo gerenciador de inicialização, era o software que suportava o sistema de arquivos CP / M (BDOS) e, depois, o último processador de comando ou "shell" (CCP). O hardware que o CP / M deveria suportar não era muito: uma unidade de disco, um monitor, uma porta serial ou duas (portas COM ou AUX) que poderiam ter impressoras ou modems conectados.

O BIOS do PC executou uma função básica de inicialização semelhante à do CP / M, e o DOS usou as funções do BIOS para executar entradas e saídas básicas, conforme planejado. Os programadores acabaram ignorando essas funções por serem lentas. Isso levou os fabricantes de clones de PC, em meados dos anos 80, a recriar a plataforma como um todo (fácil como a IBM documentou o PC original muito bem por dentro e por fora), em vez de apenas fornecer um BIOS com interfaces compatíveis, embora eles também precisassem fazer isso.

Neste ponto, podemos dizer que, para um sistema operacional moderno, o BIOS não é realmente necessário além da inicialização do sistema. Contudo ...

A partir do início dos anos 90, a noção de gerenciamento de energia entrou em vigor e o BIOS foi encarregado disso. O APM funciona bem com um sistema operacional de tarefa única, como o DOS, mas não com sistemas operacionais multitarefa verdadeiros, como Windows ou Linux. Nessa época, o 386 estava em pleno vigor, o CPU Intel que suportava multitarefa real. O DOS e o BIOS não foram atualizados em resposta aos novos recursos desta CPU, principalmente porque todas as CPUs Intel ainda serão executadas no modo de compatibilidade de 16 bits herdado para o qual o PC-BIOS original foi projetado. Portanto, os sistemas operacionais modernos praticamente ignoram / ignoram toda a funcionalidade de entrada / saída do BIOS / tipo CP / M, exceto possivelmente nos estágios iniciais de inicialização.

Eventualmente, o ACPI foi desenvolvido, principalmente parte do BIOS, que suportava o gerenciamento de energia e a configuração de coisas específicas da plataforma (geralmente laptop). A ACPI também lida com o estado final de comutação de energia de hibernação, suspensão ou desligamento.

Hoje em dia é a ACPI e sua sucessora, a EFI, que mantém algo como o BIOS uma necessidade dos PCs. O conceito abrangente é que a ACPI seja a interface entre coisas específicas da plataforma ou da placa-mãe e o sistema operacional, para que uma compilação separada do sistema operacional não seja precisa ser feito para todos os tipos diferentes de placas-mãe.

Placas de desenvolvimento que hospedam CPUs ARM executando Linux (assim como hardware de telefone celular) têm esse problema. Normalmente, eles vêm com um firmware apenas do carregador de inicialização, como U-boot, mas praticamente o sistema operacional deve suportar cada placa como uma plataforma separada.

LawrenceC
fonte
3

Em certo sentido, você está certo. O BIOS e o SO fazem parcialmente as mesmas coisas. A separação no BIOS e no SO é apenas para flexibilidade.

O BIOS geralmente é criado por um fabricante de hardware. O hardware deve garantir que uma funcionalidade básica esteja presente, por exemplo, que uma unidade de disco possa ser lida e que seja exibida uma tela básica de diagnóstico e erros. Assim, o nome "Basic Input Output System".

Isso pode ser feito, até certo ponto, sem o conhecimento dos componentes reais realmente presentes no sistema específico, pois todos eles têm que suportar um determinado pequeno padrão de BIOS. Isso permite que os fornecedores criem um sistema completo de forma personalizada. O BIOS apenas precisa fazer o suficiente para iniciar o sistema operacional. Existem algumas convenções sobre onde estão esses pontos de partida, portanto, apenas tente um após o outro. Isso também permite o uso de diferentes sistemas operacionais no mesmo hardware. (há flexibilidade, novamente)

Depois que o sistema operacional (ou pelo menos o gerenciador de inicialização) é encontrado e iniciado pelo BIOS, o próprio BIOS se torna amplamente obsoleto. O sistema operacional moderno usa muito pouco ou nada do BIOS funcionalmente após o carregamento.

Se você quisesse fazer com que o sistema operacional fizesse todo o trabalho, seria necessário colocá-lo em um local onde ele possa ser acessado pelo hardware sem a ajuda preliminar de um software (ROM). Isso pode ser possível para alguns sistemas fechados, nos quais a flexibilidade não é uma preocupação. Se você pensa em criar suporte de hardware em outro hardware, está basicamente criando um tipo de BIOS novamente ...

Outra preocupação é o tamanho e o custo da memória. Os sistemas operacionais com todos os recursos são grandes e a tentativa de obter um sistema operacional de vários gigabytes na ROM é cara, além dos problemas de acompanhamento do patch e da atualização.

Portanto, não, não há motivos técnicos, mas muitos motivos práticos, especialmente para a plataforma de PC flexível.

Oliver
fonte
3

Para executar um programa em um PC moderno, você já deve ter um programa em execução que saiba operar o hardware e carregar programas na memória. Esse problema do ovo e da galinha é resolvido com a implantação de um programa básico no próprio hardware.

Esse sistema básico de entrada / saída (BIOS) é muito pequeno e tem escopo muito limitado, mas fornece uma base suficiente para que os carregadores de inicialização de segundo estágio, como GRUB ou NTLDR , possam ser carregados e executados. Esses carregadores de segundo estágio são mais sofisticados que o programa BIOS, o que lhes permite fornecer uma base mais robusta para o sistema operacional adequado para carregar e assumir o controle.

Andrew Lambert
fonte
Boa explicação não técnica.
Caracol mecânico
1

Se uma CPU tivesse a capacidade de endereçar um disco rígido diretamente, sem depender do BIOS, EFI ou outro código na ROM (ou NVRAM ou o que você tem), então, teoricamente, essa CPU poderia carregar um SO do disco na RAM e começar executando.

Na verdade, teoricamente, essa CPU pode até executar instruções sem carregá-las na RAM. Não há razão teórica para que um computador não possa usar um disco rígido como armazenamento primário. Mas isso seria muito, muito lento.

Isso significaria ter código extra na CPU para acessar o disco e conectar alguns conceitos sobre discos, como tabelas de partição e sistemas de arquivos na CPU. Atualmente, as CPUs são grandes o suficiente para fazer isso, mas não seria uma abordagem muito flexível ou eficiente para projetar uma CPU.

david25272
fonte
Costumava ser computadores executados diretamente do disco / tambor, sem quantidade significativa de RAM.
Daniel R Hicks
-1

Não precisa disso!

O que geralmente é chamado de BIOS é um conjunto de três coisas.

  • Um carregador de inicialização
  • Uma ferramenta de configuração: agora quase obsoleta, exceto a ordem de inicialização e o relógio. A maior parte do restante deve ser automática ou definida pelo fabricante.
  • O BIOS: uma biblioteca de rotinas de saída e entrada para ajudar o sistema operacional a se comunicar com o hardware. Infelizmente, o BIOS é de 16 bits, desatualizado e não pode ser usado por sistemas operacionais modernos, portanto é amplamente ignorado.
ctrl-alt-delor
fonte
O carregador de inicialização faz parte do BIOS.
Daniel R Hicks
@ Daniel Daniel reescrevi para deixar mais claro, obrigado.
ctrl-alt-Delor