In che modo il sistema operativo è in grado di conoscere il livello della batteria?


34

Anche se rimuoviamo il sistema operativo predefinito e ne installiamo uno nuovo, può interagire con la batteria. Ci sono alcuni driver per questo? Come funziona?

Risposte:


33

Il sistema operativo si interfaccia con il firmware di un controller incorporato che fa parte di Advanced Configuration and Power Interface (ACPI).

Wikipedia lo definisce come:

In un computer, l'interfaccia ACPI (Advanced Configuration and Power Interface) fornisce uno standard aperto che i sistemi operativi possono utilizzare per rilevare e configurare i componenti hardware del computer, eseguire la gestione dell'alimentazione (ad esempio) mettere in sospensione i componenti non utilizzati ed eseguire il monitoraggio dello stato . Rilasciato per la prima volta nel dicembre 1996, ACPI mira a sostituire Advanced Power Management (APM), le specifiche multiprocessore e le specifiche BIOS Plug and Play (PnP). [1] ACPI porta la gestione dell'alimentazione sotto il controllo del sistema operativo, al contrario del precedente sistema incentrato sul BIOS che si basava su firmware specifico della piattaforma per determinare le politiche di gestione e configurazione dell'alimentazione.

Internamente, ACPI pubblicizza i componenti disponibili e le loro funzioni nel kernel del sistema operativo utilizzando elenchi di istruzioni ("metodi") forniti tramite il firmware di sistema (Unified Extensible Firmware Interface (UEFI) o BIOS), che il kernel analizza. ACPI quindi esegue le operazioni desiderate (come l'inizializzazione dei componenti hardware) utilizzando una macchina virtuale minima incorporata.

La risposta è quindi che un circuito o un micro-chip è incorporato nella scheda madre, che a sua volta contiene un micro sistema operativo che rende disponibili alcuni servizi tramite il firmware del computer - UEFI o BIOS. Controlla molti aspetti dell'alimentazione e della gestione dei dispositivi.

Il sistema operativo del computer ha un driver di sistema dedicato all'interfaccia con ACPI. Una volta attivato ACPI, assume il controllo esclusivo di tutti gli aspetti della gestione dell'alimentazione e della configurazione del dispositivo.

Sotto molti aspetti ACPI è un sistema operativo dietro il tuo sistema operativo, tranne per il fatto che viene fornito con la scheda madre e non è sotto il tuo controllo. Ci sono state voci che lo paragonano a un cavallo di Troia e lo chiamano un rischio per la sicurezza. Potrebbe essere disabilitato, ma alcuni computer potrebbero non avviarsi senza di esso e anche la gestione avanzata dell'alimentazione verrà comunque disabilitata.

Per ulteriori informazioni sul suo utilizzo in Windows consultare l'articolo Progettazione hardware del sottosistema batteria e alimentazione .


1
Potrei sbagliarmi, ma sembra che la descrizione dell'ultimo paragrafo confonda completamente ACPI con SMM e / o con ME / AMT di Intel . ACPI è principalmente una struttura di dati statici, con piccole quantità di bytecode che il sistema operativo stesso deve interpretare, mentre ME è il sistema reale.
Grawity

1
@grawity: Non la penso così. È possibile trovare una discussione simile nell'articolo Wikipedia ACPI.
harrymc,

1
Non vedo molte discussioni lì dentro oltre ad alcune citazioni di un solo post sul blog di Shuttleworth, e dopo aver letto entrambe le pagine non ne sono minimamente convinto - mi sembra che rimanga solo tutto ciò che viene fornito con il sistema sotto il Nome "ACPI", sia esso BIOS o Intel ME o altro. Per quanto ne so, di tutta la spazzatura che viene fornito con un sistema moderno, ACPI è probabilmente l'unica parte che non funziona da sola, e certamente non sotto il sistema operativo.
Grawity

2
@grawity ACPI include anche un'interfaccia di esecuzione del codice a livello di firmware, ecco come avviene effettivamente gran parte dell'interazione del firmware che la coinvolge. Su alcuni sistemi, questo utilizza SMM anche per l'esecuzione effettiva del codice, anche se fortunatamente sta diventando sempre meno comune.
Austin Hemmelgarn,

@grawity: Sì, ACPI non fa nulla nel senso che è solo un controller. Allo stesso modo, UEFI / BIOS gestisce i dispositivi e si colloca più in alto nella gerarchia hardware, e uno di questi è l'ACPI. Le funzioni sono esternalizzate ad ogni livello, diventando sempre più generalizzate ad ogni livello. Software come i sistemi operativi è progettato con lo stesso approccio dei livelli di generalizzazione, che è il modo in cui gli umani attaccano problemi complessi.
harrymc,

57

A complemento dell'altra risposta, come fa il software in esecuzione sul computer a sapere qual è il livello della batteria? Chiede la batteria.

La maggior parte delle batterie per laptop sono batterie intelligenti che dispongono di un proprio microcontrollore o ASIC "indicatore livello carburante", con cui l'host può comunicare tramite SMBus. Le persone hanno invertito alcuni esempi.

SMBus può essere esposto o meno direttamente al sistema operativo in modo da consentire all'amministratore di interrogarlo direttamente. Esistono vari programmi come OpenHardwareMonitor o Speccy o lm-sensor che possono interrogare il bus per scoprire l'hardware.


ottima spiegazione per comprendere il concetto di base in generale! Anche se vorrei inserire le virgolette intorno alla parola "chiede".
Albin,

Non c'è conflitto con la mia risposta: SMBus è un componente gestito da ACPI per i computer portatili in cui esiste.
harrymc,

1
Questa interfaccia della batteria intelligente può anche essere esposta con mezzi più standard, come USB. Ad esempio, molti UPS dispongono di una porta USB che, una volta collegata al computer, indica al computer quanta energia è rimasta e la visualizza esattamente come fa un laptop.
TheHansinator,

2
@TheHansinator Direi che SMBus è il mezzo standard per comunicare con una batteria intelligente. Quasi tutti i telefoni e computer portatili lo usano, che è un numero molto maggiore di sistemi rispetto a quelli che utilizzano dispositivi UPS esterni.
Austin Hemmelgarn,

@AustinHemmelgarn True. Forse una parola migliore è "convenzionale", in quanto il sistema è più o meno un'astrazione del sistema operativo che i dispositivi oltre alle batterie integrate possono utilizzare.
TheHansinator,

2

Più in generale, tutti i chip per computer hanno una documentazione che dice ai progettisti e ai programmatori cosa fanno e come configurarli per farlo. L'accesso a basso livello a questi chip può essere fatto leggendo e scrivendo direttamente nei registri del chip.

Chip più complicati possono venire con un programma software chiamato "driver" che consente un accesso di alto livello al sistema operativo o anche ad altre applicazioni. Lo smartphone, ad esempio, ha un'API (Application Programming Interface) che consente di accedere a gran parte dell'hardware del telefono, GPS, accelerometro, batteria, fotocamera, ecc. Quando si scrive un'app, è possibile accedere a questi dispositivi hardware utilizzando l'API proprio come il sistema operativo può (anche se il sistema operativo in genere ha un accesso più ampio rispetto a un programma in esecuzione nello "spazio utente").

Queste interfacce sono ben definite in modo tale che quando si effettua una chiamata di funzione al chip hardware, risponderà con le informazioni richieste. Il chip del controller della batteria è solo un esempio di questa infrastruttura generica.

Chi scrive il codice del sistema operativo ottiene la documentazione per il chip e scrive il software per comunicare con il chip e recuperare le informazioni che desidera.

Quindi la prossima volta che carichi un "driver" (o viene fatto automaticamente) per un disco rigido esterno, una chiavetta USB o qualcos'altro, capirai un po 'di più su come le cose accadono "sotto il cofano".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.