Ir ao conteúdo
  • Cadastre-se

Como funciona a comunicação entre BIOS e os Sistemas operacionais?


Posts recomendados

Boa tarde. Conversando com um colega, surgiu uma dúvida grande para mim.

 

A BIOS é gravado em memória ROM, uma memória não volátil. Acontece que as informações que setamos na BIOS são gravadas na CMOS RAM. Até aí, ok. 

A BIOS também tem um clock, para que possa atualizar a hora do sistema, por exemplo, quando o computador está desligado. Até aí, ok também.

 

Gostaria então de saber o seguinte: de alguma forma, a BIOS joga seus dados para o sistema operacional, durante o processo de boot? Afinal de contas, uma vez que é ela que atualiza a hora e o S.O. sempre pega essa hora atualizada, em algum momento a BIOS deve jogar suas informações para a memória RAM (que é onde o kernel do S.O. poderia ler essas informações). Dessa forma, em outras palavras, podemos dizer que a BIOS pode jogar suas informações para o Sistema Operacional. Esse meu entendimento está correto?

 

Outra dúvida: li há pouco que os novos sistemas operacionais têm programas que podem controlar os dados setados nas BIOS mas, para isso, teriam que ter o UEFI ligado. Daí me surgiu uma outra dúvida: se o meu pensamento inicial (da pergunta1) está correto, se a BIOS desde sempre pode informar coisas ao S.O., então por que só com as novas interfaces UEFI os Sistemas Operacionais podem controlar as informações de setup da BIOS? Afinal de contas, se essas informações sempre foram trocadas de um para o outro, qual o motivo do S.O. não atualiza-las de acordo com a vontade do usuário?

Link para o comentário
Compartilhar em outros sites

Só algumas considerações, o BIOS é gravado em memoria Flash, do contrario não haveria update de BIOS.

 

BIOS é basicamente a abreviação em inglês para sistema básico de entrada e saída, seria um firmware basico que permite configurar a placa-mãe de acordo com o hardware instalado e que passa essas informações para o sistema operacional...

 

O BIOS ao ligar o PC roda um software chamado POST que testa e detecta novos hardwares, testa a memoria e configura endereços de E/S e linhas de IRQ (interrupção) para todos os periféricos conectados a placa-mãe, ele também ira carregar o bootloader do sistema operacional e depois disso o trabalho do BIOS acaba e o SO assume...

 

A arquitetura IBM PC trabalha com um conceito chamado de mapeamento de E/S, onde cada periférico de hardware como porta serial/paralela, controlador SATA/USB, placas PCI/PCI-e e inclusive a memoria RAM e o próprio BIOS recebe um intervalo de endereços de E/S, que são usados pelo sistema operacional para acessar o periférico, por exemplo,  para ler/gravar algo na porta paralela o windows ira acessar respectivamente os endereços 379h e 378h

 

Do ponto de vista do sistema operacional o BIOS é apenas mais uma memoria com parâmetros a serem consultados, tipo o endereço para comunicação com um periférico, ou mesmo a qual IRQ esta associada um periférico, e sim o SO pode altera-la facilmente, porém assim como cada placa-mãe tem sua própria BIOS e cada BIOS é diferente, um programa que altere pelo windows as configurações de um BIOS só servira para alterar com segurança aquele BIOS especifico...

 

O UEFI por outro lado seria como um mini Sistema operacional, capaz de aceitar ate mesmo módulos de expansões e suportar recursos de segurança como assinaturas de software, detectar automaticamente se ha um disco de boot em uma unidade otica/pendrive...

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@F4b10

Algumas ROM são regraváveis, sim. Pelo que sei, a BIOS é um ROM: "A memória flash é uma memória do tipo EEPROM (Electrically-Erasable Programmable Read-Only Memory), cujos chips são semelhantes ao da Memória RAM, que permite que diversos endereços sejam apagados ou escritos numa só operação" (https://pt.wikipedia.org/wiki/BIOS).

 

Mas enfim... Então o SO enxergaria a BIOS como uma periférico e seria capaz de ler e gravar? Basicamente, nesse modelo, a BIOS então se comunicaria com o SO através de um barramento, não precisa nem ao menos usar a memória RAM para isso, dessa forma. Entendi corretamente? Uma vez que todas as informações já estariam na BIOS, o SO pode ler e escrever direto nela, através de uma barramento de E/S... 

Mais uma coisa... Em algum lugar, ela tem algum tipo de memória RAM interna? Que seria onde ela guardaria os dados setados no setup e que aquela pequena bateria mantém vivos mesmo ao desligar o PC? 

 

Ah... Mais uma... Como ela controla o clock? Algo dentro da BIOS funciona como algum pequeno processador, atualizando o relógio do sistema? Algum tipo de instrução deve ser dada de alguma forma e atualiza o relógio de tempos em tempos, não é? 

 

------------------------------------------------------------------------

O Arduino também usa uma ROM regravável (memória flash), tendo inclusive uma biblioteca com essas funções:

https://www.arduino.cc/en/Reference/EEPROM

EEPROM Library

The microcontroller on the Arduino and Genuino AVR based board has EEPROM: memory whose values are kept when the board is turned off (like a tiny hard drive). This library enables you to read and write those bytes.

The supported micro-controllers on the various Arduino and Genuino boards have different amounts of EEPROM: 1024 bytes on the ATmega328, 512 bytes on the ATmega168 and ATmega8, 4 KB (4096 bytes) on the ATmega1280 and ATmega2560. The Arduino and Genuino 101 boards have an emulated EEPROM space of 1024 bytes.

 

Functions

read()

write()

update()

get()

put()

EEPROM[]

 

EEPROM Clear: Clear the bytes in the EEPROM.

EEPROM Read: Read the EEPROM and send its values to the computer.

EEPROM Write: Stores values from an analog input to the EEPROM.

EEPROM Crc: Calculates the CRC of EEPROM contents as if it was an array.

EEPROM Get: Get values from EEPROM and prints as float on serial.

EEPROM Iteration: Understand how to go through the EEPROM memory locations.

EEPROM Put: Put values in EEPROM using variable semantics.

EEPROM Update: Stores values read from A0 into EEPROM, writing the value only if different, to increase EEPROM life.

Link para o comentário
Compartilhar em outros sites

O BIOS é lido por um barramento chamado de LPC (Low pin count) esse barramento também conecta o chip super I/O responsável pelas portas PS/2 Serial/paralela sendo ligado ao chipset ponte sul.

 

O LPC é um barramento bastante lento, de forma que uma função do BIOS chamada de BIOS shadow copy faz uma copia do conteúdo do BIOS para uma areá da memoria RAM, para acelerar o acesso a essas informações...

 

Na época do MS-DOS era bastante comum o acesso e controle do hardware através de funções no próprio BIOS, o que alem de complexo tinha serias limitações, já que as funções do BIOS só rodam com o processador no modo real, nesse modo o CPU se comporta como o 8086 original e só pode acessar os primeiros 640Kb de memoria... programas como o DPMS alternavam o CPU entre os modo real/protegido sempre que era necessário usar alguma função do BIOS, voltando para o modo protegido para rodar o sistema operacional...  com o surgimento do ACPI os programas passaram a fazer acesso direto ao hardware através dos drivers de periféricos, e APIs como o direct X que permitiam melhor otimização e velocidade. de forma que hoje o BIOS é mais uma memoria de consulta de pouca relevância...

 

O Chip CMOS que abriga o BIOS tem uma pequena quantidade de SRAM de baixíssimo consumo, alem de um circuito de RTC (Real time clock - relógio de tempo real) ambos são mantidos por uma bateria de lítio na ausência de alimentação da fonte.

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...