Cosa fa il mio BIOS dopo l'avvio?
Una volta che il tuo computer ha terminato il processo di avvio e sei rimasto fermamente all'interno del sistema operativo, è rimasto qualcosa da fare per il BIOS?
La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di domande e risposte di community-drive.
La domanda
Il lettore SuperUser Indrek pone questa domanda relativa al BIOS:
Mi sono sempre chiesto se il BIOS (oltre a condurre POST, avviare il bootloader e passare il controllo al sistema operativo dopo aver premuto il pulsante di accensione) ha uno scopo o una funzione mentre il sistema operativo è in esecuzione?
Il sistema operativo comunica con il BIOS durante l'esecuzione e, in caso affermativo, come?
Infatti? Che funzione ha il BIOS oltre al suo ruolo fondamentale nell'avvio del computer?
Le risposte
Per gentile concessione del collaboratore SuperUser Mechanical Snail, una panoramica di come il ruolo del BIOS è cambiato nel tempo e cosa è e cosa non funziona oggi:
Il ruolo del BIOS
Con sistemi operativi moderni, praticamente nessuno. Linus Torvalds ha riferito che il suo compito è "caricare il sistema operativo e uscire da lì".
I sistemi operativi precedenti come MS-DOS si affidavano al BIOS per molte attività (ad esempio l'accesso al disco), chiamando gli interrupt.
Con i moderni sistemi operativi, il bootloader passa rapidamente alla modalità a 32 o 64 bit ed esegue il kernel del sistema operativo. Il kernel può registrare i propri gestori di interrupt, che possono essere chiamati dalle applicazioni dello spazio utente. Le routine del kernel possono essere più portabili (poiché non dipendono dall'hardware specifico), più flessibili (i produttori di sistemi operativi possono modificarle su richiesta piuttosto che dover utilizzare tutto ciò che viene fornito con l'hardware), più sofisticate (possono eseguire arbitrariamente complessi codice piuttosto che cosa è stato programmato nel BIOS) e più sicuro (dal momento che il sistema operativo può controllare l'accesso alle risorse condivise e impedire ai programmi di clobbering l'un l'altro, implementando i propri schemi di autorizzazioni arbitrarie).
Per interagire con hardware specifico, i sistemi operativi possono caricare e utilizzare i propri driver di dispositivo. Quindi non è necessario che il sistema operativo o le applicazioni richiamino la maggior parte delle routine del BIOS. Infatti, per motivi di sicurezza, gli interrupt del BIOS sono anche disabilitati. Poiché il BIOS vive in modalità reale a 16 bit, è più difficile chiamare sistemi operativi moderni.
Mentre l'uso del BIOS è molto limitato durante l'esecuzione del sistema operativo, le sue funzioni sono ancora utilizzate in modo periferico. Ad esempio, quando un computer dorme, il sistema operativo non è in esecuzione e alla fine ricade sul firmware per impostare l'hardware sullo stato corretto per mettere in pausa e ripristinare il sistema operativo. Questi usi sono generalmente limitati a ACPIcalls anziché alle chiamate all'interfaccia completa del BIOS. ACPI è un'estensione BIOS che "porta la gestione dell'alimentazione sotto il controllo del sistema operativo (OSPM), in contrasto con il precedente sistema BIOS-centrale, che si basava sul firmware specifico della piattaforma per determinare la gestione dell'alimentazione e il criterio di configurazione".
Si noti che ufficialmente "BIOS" si riferisce ad una particolare interfaccia firmware, ma il termine è comunemente usato per riferirsi al firmware del computer in generale. Alcuni computer recenti (specialmente quelli Apple) hanno sostituito BIOS (sensu strictu) con UEFI, che ovviamente è ciò che viene chiamato per implementare queste funzioni.
Per ulteriori informazioni su come il ruolo del BIOS è diminuito nel tempo, vedere Wikipedia.
Un altro collaboratore di SuperUser, Simon Richter, ci offre una panoramica delle cose che il BIOS fa ancora:
Il BIOS e la gestione energetica
Il BIOS fornisce numerosi servizi ai sistemi operativi, molti dei quali sono relativi alla gestione dell'alimentazione:
- modifica della CPU e dei clock del bus
- abilitazione / disabilitazione dei dispositivi della scheda madre
- controllo dell'alimentazione della porta di espansione
- suspend-to-disk e suspend-to-RAM
- riprendere le impostazioni dell'evento
Suspend-to-disk è implementato nel sistema operativo il più delle volte in quanto il sistema operativo è in grado di ripristinare il suo stato più velocemente (solo lo stato del kernel viene ricaricato e lo stato del programma viene scambiato quando richiesto, che è significativamente più veloce del ricaricamento dell'intera RAM), ma la funzione rimane nelle specifiche.
Suspend-to-RAM non può essere implementato dal sistema operativo, poiché si basa sul BIOS che ignora l'inizializzazione e il test della RAM, quindi il sistema operativo necessita di un'API per comunicare al BIOS che intende riprendere i contenuti della RAM corrente. Per fornire questo servizio, il BIOS chiede al sistema operativo di lasciare una certa area RAM intatta.
L'interfaccia per il sistema operativo per tutti i servizi BIOS è un pezzo di codice macchina virtuale che deve essere eseguito su un emulatore e che genera le operazioni di I / O necessarie nell'hardware. Per la sospensione, questo è generalmente implementato in modo che l'esecuzione di una delle scritture hardware scateni un interrupt, che trasferisce il controllo al BIOS.
Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.