¿Cómo puede el sistema operativo saber el nivel de batería?

34

Incluso si eliminamos el sistema operativo predeterminado e instalamos uno nuevo, puede interactuar con la batería. ¿Hay algunos controladores para ello? ¿Como funciona?

verde
fuente

Respuestas:

33

El sistema operativo interactúa con el firmware de un controlador integrado que forma parte de la Configuración avanzada y la Interfaz de alimentación (ACPI).

Wikipedia lo define como:

En una computadora, la Interfaz avanzada de configuración y energía (ACPI) proporciona un estándar abierto que los sistemas operativos pueden usar para descubrir y configurar componentes de hardware de la computadora, para realizar la administración de energía (por ejemplo) poniendo los componentes no utilizados en suspensión y para realizar un monitoreo de estado . Lanzado por primera vez en diciembre de 1996, ACPI tiene como objetivo reemplazar la Administración avanzada de energía (APM), la Especificación de multiprocesador y la Especificación de BIOS Plug and Play (PnP). [1] ACPI pone la administración de energía bajo el control del sistema operativo, a diferencia del sistema anterior centrado en BIOS que dependía del firmware específico de la plataforma para determinar la administración de energía y las políticas de configuración.

Internamente, ACPI anuncia los componentes disponibles y sus funciones al núcleo del sistema operativo utilizando listas de instrucciones ("métodos") proporcionadas a través del firmware del sistema (Interfaz de firmware extensible unificada (UEFI) o BIOS), que analiza el núcleo. A continuación, ACPI ejecuta las operaciones deseadas (como la inicialización de los componentes de hardware) utilizando una máquina virtual mínima integrada.

La respuesta es entonces que un circuito o microchip está incrustado en la placa base, que en sí contiene un micro sistema operativo que pone a disposición algunos servicios a través del firmware de la computadora: UEFI o BIOS. Controla muchos aspectos de la administración de energía y dispositivos.

El sistema operativo de la computadora tiene un controlador de sistema dedicado a la interfaz con ACPI. Una vez que se activa ACPI, toma el control exclusivo de todos los aspectos de la administración de energía y la configuración del dispositivo.

En muchos aspectos, ACPI es un sistema operativo detrás de su sistema operativo, excepto que viene con la placa base y no está bajo su control. Ha habido voces que lo comparan con un caballo de Troya y lo llaman un riesgo de seguridad. Puede estar deshabilitado, pero algunas computadoras pueden no arrancar sin él, y la administración avanzada de energía también está deshabilitada en cualquier caso.

Para obtener más información sobre su uso en Windows, consulte el artículo Diseño de hardware del subsistema de batería y energía .

harrymc
fuente
1
Puede que me equivoque, pero parece que la descripción del último párrafo confunde completamente a ACPI con SMM y / o con ME / AMT de Intel . ACPI es principalmente una estructura de datos estática, con pequeñas cantidades de bytecode que el sistema operativo tiene que interpretar, mientras que ME es el sistema real.
Grawity
1
@grawity: no lo creo. Puede encontrar una discusión similar en el artículo de Wikipedia ACPI.
harrymc
1
No veo mucha discusión allí más allá de unas pocas citas de una publicación de blog de Shuttleworth, y después de leer ambas páginas no estoy convencido en lo más mínimo: me parece que él solo agrupa todo lo que viene con el sistema bajo el Nombre "ACPI", ya sea BIOS o Intel ME o lo que sea. Hasta donde yo sé, de toda la basura que viene con un sistema moderno, ACPI es probablemente la única parte que no se ejecuta por sí sola, y ciertamente no bajo el sistema operativo.
Grawity
2
Sin embargo, @grawity ACPI también incluye una interfaz de ejecución de código de nivel de firmware, así es como ocurre realmente mucha de la interacción de firmware que lo involucra. En ciertos sistemas, esto incluso usa SMM para la ejecución real del código, aunque afortunadamente se está volviendo cada vez menos común.
Austin Hemmelgarn
@grawity: Sí, ACPI no hace nada en el sentido de que solo es un controlador. El UEFI / BIOS maneja de manera similar los dispositivos y se ubica más arriba en la jerarquía de hardware, y uno de ellos es el ACPI. Las funciones se externalizan en cada nivel, y cada vez se generalizan más con cada nivel. El software, como los sistemas operativos, está diseñado con el mismo enfoque de niveles de generalización, que es cómo los humanos atacan problemas complejos.
harrymc
57

Como complemento a la otra respuesta, ¿cómo sabe el software que se ejecuta en la computadora cuál es el nivel de batería? Pide la batería.

La mayoría de las baterías de las computadoras portátiles son baterías inteligentes que tienen su propio microcontrolador o ASIC de "indicador de combustible", con el cual el host puede comunicarse a través de SMBus. La gente ha realizado ingeniería inversa en algunos ejemplos.

El SMBus puede o no estar expuesto directamente al sistema operativo de una manera que permita al administrador consultarlo directamente. Hay varios programas como OpenHardwareMonitor o Speccy o sensores lm que pueden interrogar al bus para averiguar sobre el hardware.

pjc50
fuente
¡Gran explicación para entender el concepto básico en general! Aunque quisiera poner comillas alrededor de la palabra "pregunta".
Albin
No hay conflicto con mi respuesta: SMBus es un componente que es administrado por ACPI para computadoras móviles en las que existe.
harrymc
1
Esta interfaz de batería inteligente también se puede exponer a través de medios más estándar, como USB. Por ejemplo, muchos UPS tienen un puerto USB en ellos que, cuando se conecta a la computadora, le dice a la computadora cuánta energía queda y la muestra como lo hace una computadora portátil.
TheHansinator
2
@ TheHansinator Yo diría que SMBus es el medio estándar para comunicarse con una batería inteligente. Casi todos los teléfonos y computadoras portátiles lo usan, que son muchos más sistemas que los que usan dispositivos UPS externos.
Austin Hemmelgarn
@AustinHemmelgarn Cierto. Quizás una palabra mejor sea "convencional", ya que el sistema es más o menos una abstracción del sistema operativo que pueden usar dispositivos además de las baterías integradas.
TheHansinator
2

De manera más general, todos los chips de computadora tienen documentación que les dice a los diseñadores y programadores qué hacen y cómo configurarlos para hacerlo. El acceso de bajo nivel a estos chips se puede hacer leyendo y escribiendo directamente en los registros del chip.

Los chips más complicados pueden venir con un programa de software llamado 'controlador' que permite un acceso de alto nivel al sistema operativo o incluso a otras aplicaciones. Su teléfono inteligente, por ejemplo, tiene una interfaz de programación de aplicaciones (API) que le permite acceder a gran parte del hardware, GPS, acelerómetro, batería, cámara, etc. del teléfono. Cuando escribe una "aplicación", puede acceder a estos dispositivos de hardware utilizando la API tal como puede hacerlo el sistema operativo (aunque el sistema operativo generalmente tiene un acceso más extenso que un programa que se ejecuta en 'espacio de usuario').

Estas interfaces están muy bien definidas para que cuando realice una llamada de función al chip de hardware, responda con la información solicitada. El chip controlador de la batería es solo un ejemplo de esta infraestructura genérica.

Quien escribe el código del sistema operativo obtiene la documentación del chip y escribe el software para comunicarse con el chip y recuperar la información que desea.

Entonces, la próxima vez que cargue un 'controlador' (o se haga automáticamente) para un disco duro externo, unidad de memoria USB o algo más, comprenderá un poco más sobre cómo suceden las cosas 'bajo el capó'.

CramerTV
fuente