Con i sistemi operativi moderni, praticamente nessuno . Secondo quanto riferito, Linus Torvalds ha affermato che il suo compito è "basta caricare il sistema operativo e andarsene da lì".
I sistemi operativi precedenti come MS-DOS facevano affidamento sul BIOS per molte attività (ad esempio l'accesso al disco), chiamando gli interrupt.
Con i sistemi operativi moderni, 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 in spazio utente. Le routine del kernel possono essere più portabili (poiché non dipendono dall'hardware specifico), più flessibili (i fornitori di sistemi operativi possono modificarle su richiesta piuttosto che dover utilizzare qualsiasi cosa fornita con l'hardware), più sofisticate (possono eseguire arbitrariamente complesse codice piuttosto che ciò che è stato programmato nel BIOS) e più sicuro (poiché il sistema operativo può controllare l'accesso alle risorse condivise e impedire ai programmi di ostacolarsi a vicenda, 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 chiamino la maggior parte delle routine del BIOS. Infatti, per motivi di sicurezza, gli interrupt del BIOS sono addirittura disabilitati. Dal momento che il BIOS vive in modalità reale a 16 bit, è più difficile richiedere sistemi operativi moderni.
Mentre l'uso del BIOS è molto limitato durante l'esecuzione del sistema operativo, le sue funzioni sono ancora utilizzate perifericamente. Ad esempio, quando un computer è in sospensione, il sistema operativo non è in esecuzione e alla fine spetta al firmware impostare l'hardware sullo stato corretto per mettere in pausa e riprendere il sistema operativo. Questi usi sono generalmente limitati alle chiamate ACPI piuttosto che alle chiamate all'interfaccia completa del BIOS. ACPI è un'estensione del BIOS che "porta la gestione dell'alimentazione sotto il controllo del sistema operativo (OSPM), a differenza del precedente sistema centrale del BIOS, che si basava su firmware specifico della piattaforma per determinare la politica di gestione e configurazione dell'alimentazione".
Si noti che ufficialmente "BIOS" si riferisce a una particolare interfaccia firmware, ma il termine è comunemente usato per riferirsi al firmware del computer in generale. Alcuni computer recenti (soprattutto quelli Apple) hanno sostituito il BIOS (sensu strictu) con UEFI, che ovviamente poi è quello che viene chiamato per implementare queste funzioni.
Per ulteriori informazioni su come il ruolo del BIOS è diminuito nel tempo, consulta Wikipedia.
Il BIOS fornisce una serie di servizi ai sistemi operativi, la maggior parte dei quali sono relativi alla gestione dell'alimentazione:
- modificare i clock della CPU e del bus
- abilitare/disabilitare i dispositivi della scheda madre
- controllo dell'alimentazione della porta di espansione
- sospensione su disco e sospensione su RAM
- riprendi le impostazioni dell'evento
La sospensione su disco è implementata nel sistema operativo la maggior parte delle volte poiché il sistema operativo può ripristinare il suo stato più velocemente (solo lo stato del kernel viene ricaricato e lo stato del programma viene scambiato quando richiesto, il che è significativamente più veloce rispetto al ricaricamento dell'intera RAM), ma la caratteristica rimane nella specifica.
La sospensione su RAM non può essere implementata dal sistema operativo, poiché si basa sul BIOS che salta l'inizializzazione e il test della RAM, quindi il sistema operativo necessita di un'API per comunicare al BIOS che intende essere ripreso con il contenuto della RAM corrente. Per fornire questo servizio, il BIOS chiede al sistema operativo di lasciare intatta una certa area di RAM.
L'interfaccia per il sistema operativo per tutti i servizi BIOS è un pezzo di codice della macchina virtuale che deve essere eseguito su un emulatore e che genera le necessarie operazioni di I/O nell'hardware. Per quanto riguarda la sospensione, questo è generalmente implementato in modo che l'esecuzione di una delle scritture hardware attivi quindi un interrupt, che trasferisce il controllo al BIOS.
Esistono tre aree principali in cui un sistema operativo utilizza il BIOS nei sistemi moderni, come quelli che utilizzano lo standard UEFI. Il primo è una serie di servizi noti come servizi di runtime UEFI. Questi servizi consentono al sistema operativo di acquisire informazioni che solo il BIOS conosce, come l'ora utilizzata dal BIOS, l'ordine di avvio, l'attuale profilo di sicurezza dell'utente, le informazioni sulla scheda madre, i moduli DIMM e così via.
La seconda è la modalità di gestione del sistema, che è una sezione nascosta della memoria (SMRAM) a cui si accede da un interrupt ad alta priorità (SMM). Molti BIOS lo utilizzano per implementare funzionalità OEM ad alta sicurezza o per implementare soluzioni hardware.
Il terzo è ACPI. ACPI fornisce configurazione, gestione dell'alimentazione e dati e codice hardware utilizzati dal sistema operativo per aumentare ciò che i driver del sistema operativo possono scoprire utilizzando uno standard industriale o un driver di dispositivo. Ad esempio, esiste un segnale speciale per controllare l'alimentazione del disco rigido o esiste un modo speciale per comunicare con la batteria che non è coperto da uno standard.
Tim