# BIOS

In informatica il BIOS (acronimo dell'inglese Basic Input-Output System, lett. "sistema di input/output di base", pronuncia inglese: ˈbaɪəʊs) è il primo programma che viene eseguito dopo l'accensione, coinvolto pertanto nella fase di avvio (boot) del sistema di elaborazione. A partire dal 2010 è stato progressivamente sostituito da UEFI.

## Storia

Quando verso la fine degli anni 1970 Intel e IBM iniziarono a produrre i primi PC basati sul processore 8088 alla fine, Intel stipulò un accordo con Microsoft per la messa a punto di un sistema operativo. Microsoft decise di dividere il sistema operativo in due parti, la prima che comprendeva le operazioni di base per far dialogare le componenti hardware del PC e che risiedeva in un chip di memoria ROM (Read Only Memory). La seconda parte del sistema operativo risiedeva su un floppy disk e veniva caricato ad ogni avvio del PC ed era composto da un insieme di programmi che interfacciavano il computer con l'utente permettendo di svolgere una serie di operazioni di base. La Intel decise allora di sviluppare in modo indipendente le due parti: la prima fu chiamata BIOS e la seconda DOS (acronimo di Disk Operative System).
Nei primi PC di IBM, il BIOS supportava tutte le periferiche e il DOS faceva completo affidamento su di esso per le operazioni a basso livello, ma con l'evoluzione tecnologica successiva le capacità offerte dalle routine di gestione del BIOS (al tempo non aggiornabili, poiché scritte su memoria ROM) divennero presto insufficienti. I moderni sistemi operativi, come Microsoft Windows o Linux, per le loro operazioni di Input/Output, non fanno più uso del BIOS, e accedono direttamente all'hardware.
Con la diffusione dei personal computer in ambito lavorativo e domestico, a partire dagli anni 1980, si sviluppò un mercato parallelo di PC compatibili con quelli IBM-Intel. Poiché IBM deteneva i diritti del BIOS e non concesse licenze, i produttori furono costretti a sviluppare il BIOS in proprio. Il primo caso fu quello della Compaq Computer seguito da alcune ditte specializzate come la Phoenix Software Associate, Award e AMI.

## Descrizione

Si tratta di un insieme di routine software, generalmente scritte su memoria ROM, FLASH o altra memoria non volatile (firmware), che forniscono una serie di funzioni di base per l'accesso all'hardware del computer e alle periferiche integrate sulla scheda madre da parte del sistema operativo e dei programmi. Nei computer IBM-compatibili la ROM del BIOS contiene anche il POST, un test che verifica che tutti i componenti e le periferiche del computer funzionino correttamente. Sovente è compilato in linguaggio assembly nativo della famiglia di CPU utilizzata. La compilazione informatica dei BIOS per i PC recenti è realizzata su memorie EEPROM riscrivibili, quindi può essere aggiornata tramite modifica. I costruttori mettono a disposizione nuove versioni di BIOS per correggere difetti rilevati oppure aggiungere supporto a nuove periferiche hardware non previste al momento della produzione del BIOS.
L'operazione di aggiornamento (flash in inglese) richiede cautela poiché, qualora non andasse a buon fine, a causa di un black out per esempio, o altri inconvenienti elettrici, potrebbe rendere inutilizzabile la scheda madre.
L'acronimo apparve per la prima volta con il sistema operativo CP/M e descriveva quella parte di CP/M che veniva caricata all'avvio, che si interfacciava direttamente con l'hardware. I computer che utilizzavano il CP/M avevano infatti soltanto un boot loader nella ROM. Anche le successive versioni del DOS avevano un file, nominato IBMBIO.COM o IO.SYS del tutto analoghi.

## Funzionamento
### Avvio del PC

A partire dall'introduzione dei primi IBM PC XT e compatibili nell'agosto del 1981, il BIOS ha il compito di dare, durante la fase di avvio, detta boot process, i primi comandi al sistema. In questa fase, dopo i controlli preliminari sulla funzionalità dei componenti fondamentali (interrupt, RAM, tastiera, dischi, porte), per elencare e inizializzare correttamente le periferiche presenti, il BIOS legge alcuni parametri, come l'ora e la data corrente, da una piccola memoria RAM CMOS tamponata, ossia mantenuta sotto tensione elettrica anche a PC spento da una batteria, del tutto separata dalla RAM principale del computer.
Nelle moderne implementazioni del BIOS possono essere selezionati differenti tipi di supporto per l'avvio e sono presenti numerose funzioni per la diagnostica e la personalizzazione di importanti funzioni relative all'utilizzo della RAM, alle opzioni per l'overclocking e sono presenti segnali acustici di allarme in caso di malfunzionamenti delle ventole atte al raffreddamento del CPU o l'eccessivo aumento della temperatura generale dell'intera scheda madre.

### Firmware su schede di espansione

Un computer può integrare il proprio BIOS con altri moduli; esistono schede di espansione che possono impiegare estensioni proprietarie del BIOS in aggiunta al contenuto di quello collocato sulla scheda madre, come la scheda video, o un controller SCSI.
Il BIOS della scheda madre, durante la fase di boot, può individuare nella memoria reale da 0xC8000 a 0xF0000 saltando di 2 kilobyte e cercando una firma "0x55 0xaa", che è seguita immediatamente da un byte che indica il numero di blocchi da 512 byte che l'espansione occupa nella memoria reale; il BIOS effettua una chiamata all'indirizzo successivo, che è la prima istruzione della subroutine di startup del BIOS della periferica e registra gli interrupt necessari, svolge le funzioni diagnostiche e mostra a video informazioni sulla scheda di espansione installata.

### Boot e sicurezza

Il BIOS è normalmente in grado di caricare un sistema operativo da diversi dispositivi di memorizzazione di massa, come dischi fissi, floppy, CD-ROM, memorie di massa USB, e talvolta anche di eseguire un boot da rete, attraverso PXE.
Ciò permette di caricare un sistema operativo diverso da quello previsto dall'amministratore di sistema, e quindi di eludere qualsiasi politica di sicurezza basata sul sistema operativo già installato.

## Compiti principali

Il BIOS assolve diversi compiti. Prima di tutto, mette a disposizione le funzioni base di un computer e dopo ogni suo avvio si assicura che le componenti principali come memoria, CPU e altre componenti dell’hardware funzionino correttamente, effettuando un test Power on Self Test (POST). Inoltre permette di risolvere un problema principale dei computer, perché ogni software deve prima essere caricato nella memoria principale per essere avviato. Per fare ciò, deve essere comunicata la posizione di quel programma e questo ruolo viene assunto dal BIOS in qualità di firmware, che funge anche da intermediario tra CPU e software. Con il tempo le funzioni del BIOS sono ulteriormente aumentate. È diventato importante anche per la gestione energetica del computer, controlla la funzionalità di dischi rigidi integrati o di altri supporti esterni e permette di configurare la successione con cui richiamare i dispositivi di memorizzazione.

## Configurazione
### Accesso e navigazione tra le schede

L'accesso al menu del BIOS avviene premendo un tasto o una combinazione di tasti, che variano tra produttori e modelli, durante la fase di POST. Alcune combinazioni utilizzate sono:
* Canc
* F1
* F2
* F11
* F12
* Esc
* Ctrl+Esc
* Ctrl+Alt
In seguito, ad esempio, sono riportati i tasti da premere sui dispositivi di alcuni produttori:
* Acer: Canc o F2
* Asus: F2
* Samsung: F2
* Lenovo: F1 o F2
* HP: F1, F2, F10, Esc o Canc
* Dell: F2 o F12
La navigazione visiva fra le schede nelle impostazioni del BIOS avviene da tastiera tramite tasti direzionali sulle schede madri per computer normali, mentre avviene tramite mouse e tastiera sulle schede madri per pc con UEFI al posto del BIOS.

### Save to disk

Su alcuni vecchi BIOS di notebook nativi Windows 98 vi è la possibilità di disattivare la comparsa dell'errore (appena terminato il caricamento del BIOS) "save to disk partition not found" relativo alla non esistenza (o dimensione insufficiente) della partizione dedicata alla memorizzazione del file di sospensione/ibernazione, collegato alle impostazioni di risparmio energia. In questi casi o si disabilita il messaggio di errore o si disabilita la sospensione oppure occorre sistemare la partizione sul disco dedicata al file di memorizzazione dello stato del PC in fase di ibernazione.

### BIOS riprogrammabile

Il BIOS è il firmware del computer, pur essendo composto da istruzioni software, è una parte integrante dell'hardware. Prima del 1990, il BIOS veniva memorizzato su una o più ROM, non riprogrammabili. Con l'aumentare della complessità, di pari passo con la necessità di aggiornamenti, si è diffusa la memorizzazione del firmware BIOS dapprima su EPROM, poi su EEPROM o flash memory, per permettere un rapido aggiornamento anche dall'utente inesperto. L'esistenza di BIOS aggiornabili dall'utente finale, permette di ottenere il supporto per CPU più aggiornate o per dischi fissi più capienti. Per effettuare tali operazioni è indispensabile consultare il manuale d'uso fornito con la scheda madre, il sito web del produttore o entrambe le modalità.
Giacché eventuali errori nell'aggiornamento del BIOS rendono il computer inutilizzabile, alcune schede madri sono dotate di un doppio BIOS che consente di ripristinarne l'uso della macchina a seguito di una riprogrammazione erronea. Sono noti alcuni virus in grado di sovrascrivere il BIOS (come il famigerato CIH o Chernobyl virus). Tuttavia, nel BIOS stesso, la maggior parte dei sistemi è dotata di un'opzione per disabilitare le funzioni di scrittura e, talvolta, di un ponticello che disabilita le tensioni di programmazione necessarie per l'alterazione della EPROM, denominata ROM riscrivibile.

## Epilogo

Con l'avvento del firmware basato su tecnologia UEFI e la successiva introduzione sul mercato (all'incirca a partire dal 2010), il BIOS, inteso come vecchia interfaccia utente del firmware, è stato destinato a progressivi rimpiazzi e quindi alla definitiva uscita di scena.
Alcuni sistemi operativi permettono tuttora di installare il sistema in ambiente Legacy.