Wie kann das Betriebssystem den Akkuladestand ermitteln?

34

Selbst wenn wir das Standard-Betriebssystem entfernen und ein neues installieren, kann es mit der Batterie interagieren. Gibt es Treiber dafür? Wie funktioniert es?

Grün
quelle

Antworten:

33

Das Betriebssystem ist mit der Firmware eines eingebetteten Controllers verbunden, der Teil des Advanced Configuration and Power Interface (ACPI) ist.

Wikipedia definiert es als:

In einem Computer bietet die erweiterte Konfigurations- und Stromschnittstelle (Advanced Configuration and Power Interface, ACPI) einen offenen Standard, mit dem Betriebssysteme Computerhardwarekomponenten erkennen und konfigurieren, die Energieverwaltung durchführen, indem beispielsweise nicht verwendete Komponenten in den Energiesparmodus versetzt und die Statusüberwachung durchgeführt werden . ACPI wurde erstmals im Dezember 1996 veröffentlicht und soll Advanced Power Management (APM), die MultiProcessor-Spezifikation und die Plug-and-Play-BIOS-Spezifikation (PnP) ersetzen. [1] Mit ACPI wird die Energieverwaltung unter die Kontrolle des Betriebssystems gebracht, im Gegensatz zu früheren BIOS-Systemen, bei denen plattformspezifische Firmware zur Festlegung der Richtlinien für die Energieverwaltung und -konfiguration verwendet wurde.

Intern kündigt ACPI die verfügbaren Komponenten und ihre Funktionen dem Betriebssystemkern mithilfe von Anweisungslisten ("Methoden") an, die über die vom Kernel analysierte Systemfirmware (Unified Extensible Firmware Interface (UEFI) oder das BIOS) bereitgestellt werden. ACPI führt dann die gewünschten Vorgänge (z. B. die Initialisierung von Hardwarekomponenten) unter Verwendung einer eingebetteten virtuellen Minimalmaschine aus.

Die Antwort ist dann, dass eine Schaltung oder ein Mikrochip in das Motherboard eingebettet ist, das selbst ein Mikrobetriebssystem enthält, das einige Dienste über die Computerfirmware - UEFI oder BIOS - zur Verfügung stellt. Es steuert viele Aspekte der Energie- und Geräteverwaltung.

Das Betriebssystem des Computers verfügt über einen Systemtreiber, der für die Schnittstelle mit ACPI vorgesehen ist. Sobald ACPI aktiviert ist, übernimmt es die ausschließliche Kontrolle über alle Aspekte der Energieverwaltung und Gerätekonfiguration.

In vielerlei Hinsicht ist ACPI ein Betriebssystem hinter Ihrem Betriebssystem, mit der Ausnahme, dass es mit dem Motherboard geliefert wird und nicht unter Ihrer Kontrolle steht. Es gab Stimmen, die es mit einem trojanischen Pferd verglichen und es als Sicherheitsrisiko bezeichneten. Möglicherweise ist es deaktiviert, aber einige Computer booten möglicherweise nicht ohne es, und die erweiterte Energieverwaltung ist in jedem Fall ebenfalls deaktiviert.

Weitere Informationen zur Verwendung in Windows finden Sie im Artikel Hardware-Design für Akkus und Stromversorgungssysteme .

Harrymc
quelle
1
Ich könnte mich irren, aber es hört sich so an, als würde die Beschreibung des letzten Absatzes ACPI vollständig mit SMM und / oder Intels ME / AMT verwechseln . ACPI ist meist eine statische Datenstruktur mit kleinen Mengen an Bytecode, die das Betriebssystem selbst interpretieren muss, während ME das eigentliche System ist.
Grawity
1
@grawity: Glaube nicht. Eine ähnliche Diskussion finden Sie im Wikipedia-ACPI-Artikel.
Harrymc
1
Ich sehe dort nicht viel Diskussion, abgesehen von ein paar Zitaten aus einem Blogbeitrag von Shuttleworth, und nachdem ich beide Seiten gelesen habe, bin ich nicht im Geringsten überzeugt - es scheint mir, dass er einfach alles zusammenfasst , was mit dem System unter dem kommt "ACPI" Name, sei es das BIOS oder der Intel ME oder was auch immer. Soweit ich weiß, ist ACPI von all dem Müll, den ein modernes System mit sich bringt , wahrscheinlich der einzige Teil, der nicht von alleine läuft, und schon gar nicht unter dem Betriebssystem.
Grawity
2
@grawity ACPI enthält auch eine Schnittstelle zur Codeausführung auf Firmware-Ebene. Auf diese Weise findet ein Großteil der Firmware-Interaktion tatsächlich statt. Auf bestimmten Systemen wird sogar SMM für die eigentliche Codeausführung verwendet, was jedoch erfreulicherweise immer seltener wird.
Austin Hemmelgarn
@grawity: Ja, ACPI macht nichts in dem Sinne, dass es nur ein Controller ist. Das UEFI / BIOS verwaltet Geräte auf ähnliche Weise und steht in der Hardware-Hierarchie an oberster Stelle. Eines davon ist das ACPI. Funktionen werden auf jeder Ebene externalisiert und mit jeder Ebene immer weiter verallgemeinert. Software wie Betriebssysteme ist in etwa auf die gleiche Weise wie Generalisierungsebenen ausgelegt, bei denen Menschen komplexe Probleme angreifen.
Harrymc
57

Wie kann die auf dem Computer ausgeführte Software als Ergänzung zur anderen Antwort den Ladezustand des Akkus ermitteln? Es fragt die Batterie.

Bei den meisten Laptop-Batterien handelt es sich um intelligente Batterien , die über einen eigenen Mikrocontroller oder einen ASIC mit "Kraftstoffanzeige" verfügen, mit dem der Host über SMBus kommunizieren kann. Die Leute haben einige Beispiele rückentwickelt.

Der SMBus kann direkt dem Betriebssystem ausgesetzt sein oder nicht, sodass der Administrator ihn direkt abfragen kann. Es gibt verschiedene Programme wie OpenHardwareMonitor oder Speccy oder lm-sensors, die den Bus abfragen können, um Informationen zur Hardware zu erhalten.

pjc50
quelle
Tolle Erklärung, um das Grundkonzept im Allgemeinen zu verstehen! Obwohl ich würde Anführungszeichen um das Wort "fragt".
Albin
Es gibt keinen Konflikt mit meiner Antwort: SMBus ist eine Komponente, die von ACPI für mobile Computer verwaltet wird, auf denen sie vorhanden ist.
Harrymc
1
Diese intelligente Batterieschnittstelle kann auch über andere Standardmethoden wie USB zugänglich gemacht werden. Beispielsweise verfügen viele USVs über einen USB-Anschluss, der dem Computer beim Anschließen an den Computer mitteilt, wie viel Strom noch zur Verfügung steht, und wie ein Laptop anzeigt.
TheHansinator
2
@TheHansinator Ich würde behaupten , dass SMBus ist das Standardmittel zur Kommunikation mit einer intelligenten Batterie. Fast alle Telefone und Laptops verwenden es. Dies sind weitaus mehr Systeme als externe USV-Geräte.
Austin Hemmelgarn
@AustinHemmelgarn Richtig. Vielleicht ist ein besseres Wort "konventionell", da das System mehr oder weniger eine Betriebssystemabstraktion ist, die Geräte neben eingebetteten Batterien verwenden können.
TheHansinator
2

Im Allgemeinen verfügen alle Computerchips über eine Dokumentation, die Designern und Programmierern mitteilt, was sie tun und wie sie dafür konfiguriert werden müssen. Ein Zugriff auf diese Chips auf niedriger Ebene kann durch direktes Lesen und Schreiben in die Register des Chips erfolgen.

Kompliziertere Chips können mit einem Softwareprogramm geliefert werden, das als "Treiber" bezeichnet wird und den Zugriff auf das Betriebssystem oder andere Anwendungen auf hoher Ebene ermöglicht. Ihr Smartphone verfügt beispielsweise über eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API), die den Zugriff auf einen Großteil der Telefonhardware, des GPS, des Beschleunigungsmessers, des Akkus, der Kamera usw. ermöglicht. Wenn Sie eine "App" schreiben, können Sie über die API auf diese Hardwaregeräte zugreifen So wie es das Betriebssystem kann (obwohl das Betriebssystem normalerweise einen umfangreicheren Zugriff hat als ein Programm, das im "Benutzerbereich" ausgeführt wird.)

Diese Schnittstellen sind sehr gut definiert, sodass beim Funktionsaufruf des Hardware-Chips die angeforderten Informationen angezeigt werden. Der Batteriecontroller-Chip ist nur ein Beispiel für diese allgemeine Infrastruktur.

Wer den Betriebssystemcode schreibt, erhält die Dokumentation für den Chip und schreibt Software, um mit dem Chip zu kommunizieren und die gewünschten Informationen abzurufen.

Wenn Sie das nächste Mal einen "Treiber" für eine externe Festplatte, einen USB-Stick oder etwas anderes laden (oder dies geschieht automatisch), werden Sie ein wenig mehr darüber erfahren, wie die Dinge "unter der Haube" ablaufen.

CramerTV
quelle