Como o sistema operacional pode saber o nível da bateria?

34

Mesmo se removermos o sistema operacional padrão e instalarmos um novo, ele poderá interagir com a bateria. Existem alguns drivers para isso? Como funciona?

verde
fonte

Respostas:

33

O sistema operacional faz interface com o firmware de um controlador incorporado que faz parte da ACPI ( Advanced Configuration and Power Interface ).

A Wikipedia define como:

Em um computador, a ACPI (Advanced Configuration and Power Interface) fornece um padrão aberto que os sistemas operacionais podem usar para descobrir e configurar os componentes de hardware do computador, executar o gerenciamento de energia (por exemplo) colocando componentes não utilizados no modo de suspensão e monitorando o status . Lançado pela primeira vez em dezembro de 1996, o ACPI visa substituir o Advanced Power Management (APM), a MultiProcessor Specification e a Plug and Play BIOS (PnP). [1] A ACPI coloca o gerenciamento de energia sob o controle do sistema operacional, em oposição ao sistema centralizado no BIOS anterior, que dependia de firmware específico da plataforma para determinar as políticas de gerenciamento e configuração de energia.

Internamente, a ACPI anuncia os componentes disponíveis e suas funções para o kernel do sistema operacional usando listas de instruções ("métodos") fornecidas pelo firmware do sistema (UEFI) ou BIOS, que o kernel analisa. O ACPI executa as operações desejadas (como a inicialização dos componentes de hardware) usando uma máquina virtual mínima incorporada.

A resposta é, então, que um circuito ou micro-chip está embutido na placa-mãe, que contém um micro sistema operacional que disponibiliza alguns serviços através do firmware do computador - UEFI ou BIOS. Ele controla muitos aspectos do gerenciamento de energia e dispositivos.

O sistema operacional do computador possui um driver de sistema dedicado à interface com a ACPI. Uma vez ativado, o ACPI assume o controle exclusivo de todos os aspectos do gerenciamento de energia e da configuração do dispositivo.

Em muitos aspectos, o ACPI é um sistema operacional por trás do sistema operacional, exceto pelo fato de ser fornecido com a placa-mãe e não estar sob seu controle. Houve vozes comparando-o a um cavalo de Tróia e chamando-o de risco à segurança. Ele pode estar desativado, mas alguns computadores podem não inicializar sem ele, e o gerenciamento avançado de energia também é desativado.

Para obter mais informações sobre seu uso no Windows, consulte o artigo Design de hardware do subsistema de bateria e energia .

harrymc
fonte
11
Posso estar errado, mas parece que a descrição do último parágrafo confunde completamente a ACPI com SMM e / ou ME / AMT da Intel . O ACPI é principalmente uma estrutura de dados estática, com pequenas quantidades de bytecode que o próprio sistema operacional deve interpretar, enquanto o ME é o sistema real.
grawity
11
@ grrawity: Não pense assim. Você pode encontrar uma discussão semelhante no artigo da Wikipedia sobre ACPI.
harrymc
11
Não vejo muita discussão além de algumas citações de um post de Shuttleworth e, depois de ler as duas páginas, não estou nem um pouco convencido - parece-me que ele apenas agrupa tudo o que vem com o sistema sob o Nome "ACPI", seja o BIOS ou o Intel ME ou o que for. Até onde eu sei, de todo o lixo que vem com um sistema moderno, a ACPI é provavelmente a única parte que não é executada por si só, e certamente não no SO.
grawity
2
No entanto, a ACPI também inclui uma interface de execução de código no nível do firmware, é assim que ocorre muita interação com o firmware. Em certos sistemas, isso ainda usa o SMM para a execução real do código, embora, felizmente, isso esteja ficando cada vez menos comum.
Austin Hemmelgarn
@ grrawity: Sim, a ACPI não faz nada no sentido de que é apenas um controlador. O UEFI / BIOS gerencia dispositivos da mesma forma e é colocado mais alto na hierarquia de hardware, e um deles é o ACPI. As funções são externalizadas em cada nível, tornando-se cada vez mais generalizadas em cada nível. Softwares como sistemas operacionais são projetados da mesma maneira que os níveis de generalização, e é assim que os humanos atacam problemas complexos.
harrymc
57

Como complemento da outra resposta, como o software em execução no computador sabe qual é o nível da bateria? Ele pede a bateria.

A maioria das baterias de laptop são baterias inteligentes que possuem seu próprio microcontrolador ou ASIC "medidor de combustível", com o qual o host pode se comunicar através do SMBus. As pessoas fizeram engenharia reversa de alguns exemplos.

O SMBus pode ou não ser exposto diretamente ao sistema operacional de uma maneira que permita ao administrador consultá-lo diretamente. Existem vários programas como o OpenHardwareMonitor ou Speccy ou lm-sensores que podem interrogar o barramento para descobrir o hardware.

pjc50
fonte
ótima explicação para entender o conceito básico em geral! Embora eu gostaria de aspas em torno da palavra "pergunta".
Albin
Não há conflito com a minha resposta: o SMBus é um componente gerenciado pela ACPI para computadores móveis nos quais existe.
harrymc
11
Essa interface inteligente de bateria também pode ser exposta por meios mais padrão, como USB. Por exemplo, muitos no-breaks possuem uma porta USB que, quando conectada ao computador, informa ao computador quanta energia resta e a exibe exatamente como um laptop.
TheHansinator
2
@TheHansinator Eu diria que o SMBus é o meio padrão de comunicação com uma bateria inteligente. Quase todos os telefones e laptops o usam, o que é muito mais sistemas do que os dispositivos UPS externos.
Austin Hemmelgarn
@AustinHemmelgarn True. Talvez uma palavra melhor seja "convencional", na medida em que o sistema é mais ou menos uma abstração de SO que dispositivos além de baterias embutidas podem usar.
TheHansinator
2

De maneira mais geral, todos os chips de computador possuem documentação que informa aos projetistas e programadores o que eles fazem e como configurá-los para fazê-lo. O acesso de baixo nível a esses chips pode ser feito lendo e gravando diretamente nos registros do chip.

Os chips mais complicados podem vir com um programa de software chamado 'driver' que permite acesso de alto nível ao sistema operacional ou mesmo a outros aplicativos. O seu telefone inteligente, por exemplo, possui uma API (Interface de programação de aplicativos) que permite acessar grande parte do hardware, GPS, acelerômetro, bateria, câmera do telefone, etc. Ao escrever um "aplicativo", você pode acessar esses dispositivos de hardware usando a API assim como o sistema operacional pode (embora o sistema operacional geralmente tenha acesso mais extenso do que um programa em execução no 'espaço do usuário').

Essas interfaces são muito bem definidas para que, quando você fizer uma chamada de função ao chip de hardware, ela responderá com as informações solicitadas. O chip do controlador de bateria é apenas um exemplo dessa infraestrutura genérica.

Quem escreve o código do sistema operacional obtém a documentação do chip e escreve o software para se comunicar com o chip e recuperar as informações desejadas.

Portanto, da próxima vez que você carregar um 'driver' (ou é feito automaticamente) para um disco rígido externo, pen drive USB ou qualquer outra coisa, você entenderá um pouco mais sobre como as coisas acontecem 'sob o capô'.

CramerTV
fonte