Um BIOS tem alguma função especial que outro programa não poderia fazer?

6

Eu só quero perguntar, quando eu estava pesquisando informações sobre o BIOS, eu encontrei principalmente artigos desatualizados, então eu só tenho algumas perguntas simples sobre como ele funciona hoje.

Se eu estiver correto, a finalidade principal do BIOS é carregar informações do HDD para a CPU (principalmente alguns sistemas operacionais). Mais tarde, eles adicionaram pequenas rotinas que você poderia chamar usando a instrução int, que simplificava algumas tarefas no PC, como acessar o HDD ou acessar o VGA e assim por diante.

Mas se eu ainda estiver correto, todo esse trabalho pode ser feito manualmente por qualquer outro programa que tenha o modo de toque 0. Quero dizer, o BIOS não tem nenhuma função especial que qualquer outro programa não poderia ter, estou certo?

Eu sei que, nos dias do DOS, as rotinas do BIOS eram muito utilizadas. Mas hoje em dia, eles são? Quero dizer, o SO atualmente usa rotinas BIOS? Quando existem drivers para tudo?

Mas o BIOS ainda é atualizado muito, com muitas correções de bugs, então eu me pergunto o que exatamente é o papel da BIOS hoje em dia.

Por exemplo, estou pensando em mudar a frequência do FSB. Você pode fazê-lo através de BIOS, mas você tinha que ter outra maneira de fazer isso certo? Desde BIOS é apenas programa.

A única coisa que eu acho que você pode precisar do BIOS é a camada de compatibilidade entre o SO e o hardware específico, como o chipset, mas ainda assim, se você soubesse o caminho exato para chegar ao disco rígido (quais portas e quais dados enviar para eles) para isso sem BIOS é certo? Obrigado.

    
por user32569 05.11.2010 / 23:31

3 respostas

11

O bit 'BIOS' de 'The BIOS' é de fato a camada de compatibilidade entre o hardware e o sistema operacional. Sim, você poderia dirigir diretamente o hardware MAS precisaria escrever código de driver para cada variante do design da placa-mãe para que seu aplicativo funcionasse em todas as máquinas. No passado muito obscuro e distante quando o Lotus 123 era um aplicativo DOS, as primeiras versões conduziram a porta da impressora paralela diretamente para acelerar o desempenho de impressão, o que foi muito bom se você tivesse um IBM PC verdadeiro ou um clone muito bom , mas em alguns PCs, o 123 não imprimia porque a eletrônica da porta paralela era um pouco diferente do design da IBM.

As rotinas de hardware e os mecanismos de interrupção da BIOS também ajudam a arbitrar entre vários aplicativos que tentam usar o mesmo hardware ou ler os mesmos registros simultaneamente, evitando assim a anarquia - também travamentos entre aplicativos competindo por acesso a hardware de baixo nível. p>

As outras duas partes do 'BIOS' são as rotinas de autoteste (POST) e o 'programa de configuração CMOS' para o computador.

Movimentos estão em andamento para substituir o design do BIOS por algum tempo - até porque sua funcionalidade como uma camada de compatibilidade de hardware tem um preço de desempenho. Mais e mais computadores estão sendo construídos com uma maneira alternativa de fazer as coisas, chamada Extensible Firmware Interface (EFI - agora transformada em EFI ou UEFI Unified) - a Apple já usa EFI há algum tempo e tem desktop e servidor high-end. máquinas. Se você quiser saber mais, dê uma olhada neste artigo da Wikipedia. e aqui está uma recente news piece .

    
por 05.11.2010 / 23:54
3

Você está entendendo mal uma coisa muito importante. BIOS não é software, é firmware . É a parte que padroniza a funcionalidade no nível HW. É o que carrega todos os outros "programas".

O principal problema em permitir que o SO direcione diretamente o hardware são melhorias. Por exemplo, foi provado que os tradicionais processadores x86 são mortos há muito tempo. Modernos processadores "x86" não são x86 internamente. Em vez disso, eles também têm um firmware (nesse caso chamado microcódigo), de modo que pareçam ser processadores x86. Uso de firmware é um nível de encapsulamento. Também os modernos processadores x86 precisam suportar instruções que eram necessárias devido às peculiaridades presentes nos sistemas 8086 e 268, mesmo que eles não sejam usados muito hoje em dia.

Basicamente, o próprio sistema operacional não está preocupado com o funcionamento do hardware. Veja o que o BIOS mostra, que pode ou não estar correto no nível do hardware. Isso cria separação de responsabilidades entre as pessoas envolvidas na fabricação e no projeto de computadores e permite que todas as organizações se preocupem com as peças mais próximas. A maioria dos programadores não sabe como um processador ou uma placa-mãe funciona em um nível baixo e eles não precisam saber porque eles programam para uma interface especificada. Por outro lado, os projetistas de chipsets sabem como uma placa-mãe funciona, então eles também programam o BIOS para uma interface específica. Os fabricantes de placas-mãe não fazem motherboards do zero. Eles pegam componentes completos e os integram em um único sistema e modificam um pouco o BIOS da placa-mãe para trabalhar com componentes usados. Há também firmware está presente porque o BIOS se comunica com o firmware do chip de rede ou com o firmware do chip de áudio e assim por diante.

As atualizações do BIOS que você vê com frequência não são atualizações de algumas das principais funcionalidades. Em vez disso, hoje os fabricantes de placas-mãe precisam lançar seus produtos o mais rápido possível, de modo que tentam fazer as modificações do BIOS o mais rápido possível, o que geralmente leva a erros. Às vezes, as atualizações do BIOS estão lá para corrigir o firmware de algum outro dispositivo. Por exemplo, a Intel disponibiliza atualizações para o microcódigo de seus processadores. Se um bug importante for identificado em um processador, a Intel enviará essas atualizações para os fabricantes de placas-mãe que usam processadores afetados que farão atualizações do BIOS que atualizarão o microcódigo do processador (o microcódigo é somente leitura, portanto, isso precisa ser feito a cada inicialização) .

Quanto a mudar a frequência do FSB e similares, você sempre faz isso através do BIOS. É só que alguns BIOS expõem a componentes de programas que são responsáveis pelo FSB para que possam ser modificados por um programa. Ainda assim, esses programas são especializados porque precisam saber com o que estão trabalhando.

Outro ponto são os fabricantes de hardware. O hardware em si precisa saber onde procurar por programas. Em sistemas microcontroladores simples (eles são exatamente como os computadores de 30 anos atrás em suas capacidades) você tem o ponto de partida do programa. O microcontrolador sempre lê um único endereço de memória onde os dados sobre onde o programa está sendo iniciado são armazenados. BIOS faz isso para PCs. Imagine como seria complicado se o processador acessasse dados diretamente no HDD. Ele precisaria saber como tudo por si mesmo através do chipset, do controlador de HDD e do próprio HDD funciona e onde o HDD é o sistema operacional armazenado.

Depois de ler sua pergunta várias vezes, acho que o principal problema com sua visão da BIOS e seu lugar é quão próximo está o sistema operacional conectado ao hardware no PC moderno. Foi decidido que, no PC, o sistema operacional não estará tão intimamente conectado ao hardware. Com o tempo, essa decisão provou ser boa. Dê uma olhada no coreboot ( artigo da Wikipédia ). Eles estão implementando todo o sistema operacional GNU / Linux no chip BIOS do computador. Como você pode ver, eles têm muitos problemas relacionados a informações disponíveis sobre placas-mãe específicas, mas eles têm suas vantagens. Seu sistema pode inicializar em apenas alguns segundos. Outro computador interessante é o Acorn . Seus computadores tinham locais inteiros para o sistema de informação, um único chip. Existe também a Apple. Seu sistema operacional não é tão ligado ao hardware e é possível fazer hackintosh, mas a relação é até mais perto que está no PC.

No final, acho que a principal razão para a existência de BIOS hoje é a abertura da plataforma PC. É muito fácil fazer hardware para PCs e uma das principais razões para isso é que não existe uma única empresa que controle as especificações do PC. Se a BIOS (ou suas substituições mais recentes) for eliminada, você precisará de alguém para estar lá para garantir que os desenvolvedores de SO e os designers de hardware sejam sincronizados e isso seria extremamente complicado.

    
por 06.11.2010 / 11:46
2

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.

    
por 06.11.2010 / 13:15

Tags