Risposte:
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 .
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.
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".