Perché un computer deve avere un BIOS?


35

Il software BIOS è integrato nel PC ed è il primo codice eseguito da un PC all'accensione ("firmware di avvio"). All'avvio del PC, il primo lavoro per il BIOS è l'autotest all'accensione, che inizializza e identifica i dispositivi di sistema come CPU, RAM, scheda video, tastiera e mouse, unità disco fisso, unità disco ottico e altro hardware. Il BIOS individua quindi il software del caricatore di avvio contenuto in un dispositivo periferico (indicato come "dispositivo di avvio"), come un disco rigido o un CD / DVD, e carica ed esegue quel software, dandogli il controllo del PC. [2] Questo processo è noto come avvio o avvio, che è l'abbreviazione di bootstrap.

Quali requisiti determinano che un sistema informatico deve avere un BIOS installato su di esso?

Perché il sistema operativo non può effettivamente far funzionare tutto il BIOS?


40
Perché un motore di un'auto ha bisogno di un dispositivo di avviamento? Il motore non dovrebbe essere abbastanza potente da avviarsi?
Der Hochstapler,

4
@OliverSalzburg questo sarà possibile nel prossimo futuro, motori a gas senza motorini di avviamento. Con iniezione diretta e computer è un gioco da ragazzi.
Moab,

2
Hanno già motori autoaccendenti, ma sono per lo più motori a 12 cilindri o rotativi. La maggior parte dei motori non è in grado di avviarsi automaticamente perché non è in grado di produrre abbastanza potenza in un solo colpo di potere per superare il suo momento di inerzia. L'iniezione diretta e una tempistica migliore potrebbero aiutare un po ', ma in realtà hai bisogno di motori più leggeri per aumentare il rapporto tra l'energia generata in una corsa di potenza e il momento di intertia creato da volano, albero motore, ingranaggi, ecc.
Lèse majesté,

5
In realtà, un BIOS in senso PC NON è necessario. I computer IBM System / 360 e / 370 (e forse le versioni più recenti) sono stati avviati con una singola istruzione cablata che legge un singolo record da un dispositivo selezionato dai quadranti sulla console. Quel record conteneva un programma bootstrap (doveva contenere 80 byte - una scheda perforata) che caricava un programma bootstrap più complesso, che caricava il sistema operativo dal disco. Immagino che il "BIOS" fosse quella singola istruzione cablata da eseguire quando si premeva il pulsante destro (chiamato IPL o caricamento iniziale del programma).
Ex Umbris

2
Stai confondendo "computer" e "PC" nella tua domanda. Ecco perché le risposte sono confuse e talvolta contraddittorie.
RDS

Risposte:


41

Un BIOS è un pezzo di codice dipendente dall'hardware memorizzato sulla scheda madre stessa. Ogni scheda madre diversa ha bisogno di un BIOS personalizzato scritto per questo, quindi sarebbe impossibile avere un BIOS / OS generico all-in-one (anche se il BIOS è tecnicamente solo codice memorizzato, quindi teoricamente potresti scrivere un sistema operativo per una scheda madre particolare) . Come hai già detto, lo scopo del BIOS è di effettuare le seguenti operazioni:

All'avvio del PC, il primo lavoro per il BIOS è l'autotest all'accensione, che inizializza e identifica i dispositivi di sistema come CPU, RAM, scheda video, tastiera e mouse, unità disco fisso, unità disco ottico e altro hardware.

Si noti che è ancora possibile avviare un computer senza memoria esterna, motivo per cui il BIOS è un requisito per un computer. In altri termini, il BIOS fornisce un'interfaccia software comune per consentire a un programma per computer memorizzato di comunicare con vari dispositivi hardware collegati alla scheda madre.

Ad esempio, se ho due diverse schede madri con due diversi controller SATA, il BIOS mi consente di scrivere un pezzo di codice che può funzionare con entrambi, senza che io sappia come la scheda madre effettivamente invia comandi al dispositivo SATA. Devo solo dire al computer "leggere il settore X da questo dispositivo SATA" e il BIOS è responsabile dell'invio effettivo di tali comandi all'hardware.

Il punto in cui ottiene effettivamente le informazioni di "lettura del settore X" è un programma memorizzato contenuto nel BIOS, che di solito indirizza il computer ad avviare la lettura da un bootloader archiviato in una posizione comune. Queste posizioni comuni sono concordate da vari sviluppatori di software e hardware e generalmente fornite al pubblico per consentire una maggiore compatibilità tra i sistemi.

Una volta stabilito un livello base di interfacciamento (di nuovo, interfaccia logica tramite software), il sistema operativo stesso crea un'interfaccia comune con i vari dispositivi hardware (di solito utilizzando "driver di dispositivo") e il sistema operativo può quindi controllare l'hardware.


Infine, va notato che il BIOS viene utilizzato anche per apportare modifiche alle configurazioni hardware del computer e memorizzarle nella EEPROM di bordo (in modo che il computer ricordi le modifiche al successivo avvio). Tuttavia, come ho detto in precedenza, una volta caricato il sistema operativo, ha il pieno controllo del computer.

Ciò consente ai produttori di schede madri di sviluppare software che consente di apportare queste modifiche all'interno del sistema operativo, anziché dover riavviare il BIOS. Ancora una volta, questo dipende molto dall'hardware e dal software, ma dimostra che tutta l'interfaccia del computer è relativa. Il BIOS è esattamente ciò che suggerisce il nome: un sistema di input / output di base, per consentire a un'interfaccia software comune per un programma più avanzato ("sistema operativo") di assumere il controllo della macchina.


2
All'avvio del computer, il BIOS è in esecuzione come codice macchina sul processore. Puoi pensarlo in quel modo ma non è davvero "spento" in un certo senso: passa semplicemente per eseguire il sistema operativo. Quando si avvia il computer, il BIOS indica al computer di iniziare l'esecuzione del codice macchina archiviato nella posizione X. In termini più comuni, il BIOS inizializza semplicemente l'hardware e indica al computer da dove continuare l'esecuzione del codice.
Breakthrough

13
BIOS / OS all-in-one NON è impossibile. Non so perché tutti qui continuino a dirlo. Avere ciascuna parte su dispositivi / archiviazione separati non significa che non facciano parte della stessa entità logica. I computer precedenti al PC IBM avevano all-in-one, ovvero il BIOS era prodotto e sviluppato dallo stesso che aveva sviluppato il kernel del sistema operativo. In effetti gli aggiornamenti del sistema operativo a volte includevano aggiornamenti del BIOS.
m0skit0,

3
@Oliver In realtà, con ACPI, le funzioni BIOS vengono abitualmente utilizzate dopo l'avvio del sistema operativo.
derobert,

1
Il BIOS consente al sistema operativo (livello software) di interagire con l'hardware. Il BIOS e il sistema operativo hanno scopi diversi. Sono due parti di un tutto. Uno non sostituisce un altro.
Ben Richards,

1
@Breakthrough: dipende da chi produce l'hardware;) Nel caso dei PC IBM, l'evoluzione logica era indipendente dai produttori di BIOS e OS a causa della molteplicità dei tipi di hardware. Questo non è accaduto nei vecchi tempi. Questo è il motivo per cui il PC è stata una (fortunata, tranne per il fatto di avere $ M senza motivo ...) che ha cambiato l'intero mercato informatico.
m0skit0

7

Il tuo sistema operativo è sul tuo disco rigido, se accendi il computer non inizierà magicamente a leggere da quel disco rigido. È il BIOS che carica il caricatore di avvio dal disco rigido , oltre a eseguire alcuni test e consentire di configurare determinate impostazioni del BIOS.

Il tuo sistema operativo non può farlo perché si trova sul disco rigido e non nella ROM.

Quindi, è necessario un BIOS o una tecnologia simile (ma diversa) come EFI ...

È possibile mettere parte del sistema operativo sulla ROM (responsabile del caricamento del boot loader del sistema operativo) dal produttore; tuttavia, questo non è ampiamente applicabile e c'è comunque un BIOS o EFI disponibile.


1
Stai mescolando due concetti diversi. Il BIOS è indipendente dal sistema operativo, ovvero il BIOS potrebbe far parte del sistema operativo. Ad esempio, se è realizzato dallo stesso produttore e funziona solo con quel sistema operativo, come i bootstrapper della console di gioco.
m0skit0,

5
"Il BIOS è indipendente dal sistema operativo, ovvero il BIOS potrebbe far parte del sistema operativo." Eh? La contraddizione è molto contraddittoria, lol.
Sfondamento

2
Le console di gioco sono computer, così come Atari, Amiga e vecchi Mac, quindi è sicuramente rilevante. @Breakthrough: non è contraddittorio. Significa che il BIOS non ha nulla a che fare con il sistema operativo e quindi può farne parte (o meno).
m0skit0,

@TomWijsman Sei l'unico a pescare qui. Le console di gioco sono un sottoinsieme di computer. Se è possibile per alcune console farlo, allora è possibile per alcuni computer. Inoltre, non usare grassetto proprio così. È inappropriato.
luiscubal,

1
@TomWijsman ha ragione, se le console di gioco possono farlo, così anche i computer. Inoltre, purché non si tratti di una domanda o di una risposta, non vedo alcun problema con l'essere fuori tema. I commenti sono commenti, dopo tutto; niente di più, niente di meno. (Nessun commento sull'audace questione - a ciascuno il suo, anche se questo riguarda più la terminologia.)
Breakthrough

6

Nessuna vera ragione logica. È più una questione di eredità e storia.

  1. Non è necessario che un computer debba avere un BIOS installato. È ereditato dal PC IBM. Anche se questa si è rivelata una buona idea

  2. Fare in modo che il Sistema operativo non cambierebbe nulla perché farebbe comunque qualcosa come il BIOS. Ovviamente il sistema operativo dovrebbe trovarsi in una ROM, non in un dispositivo I / O. Il problema potrebbe sorgere per problemi di monopolio quando un builder del sistema operativo decide di rendere il suo BIOS del sistema operativo incompatibile con altri sistemi operativi. La separazione dei produttori di BIOS dai sistemi operativi migliora la libertà su quale software potrebbe essere eseguito.


1
Perché non può funzionare come BIOS? Dai una spiegazione sul perché. Devi solo mettere bootstrapper su una ROM e il gioco è fatto. Non intendo averlo interamente nella ROM, e anche così funzionerebbe se la ROM è abbastanza grande (ovviamente per eseguirlo dovresti caricare parti nella RAM, ma lo fa anche l'attuale BIOS).
m0skit0,

3
Ha detto "computer", non PC. E sì, è applicabile. In effetti era così prima del PC IBM (Atari, Amiga ... il BIOS fa parte del sistema operativo).
m0skit0,

2
Stupidamente, scrivevo software per computer embedded che non avevano BIOS o SO, solo codice dell'applicazione. O non stiamo parlando di tutti i computer, solo quelli a cui la maggior parte della gente pensa?
jwernerny,

2
Non applicabile su larga scala? Scopri quanti Ataris, Amigas e Mac erano presenti prima del PC.
m0skit0,

2
L'iPhone è un computer e non credo che abbia un BIOS. Anche prima dell'era digitale ... un computer è una macchina programmabile che esegue operazioni e produce lo stesso risultato per un dato input, giusto? Un telaio Jacquard è un computer e certamente non ha un BIOS (non ha nemmeno un sistema operativo).
RDS

5

È necessario qualcosa per avviare il sistema operativo. Se il sistema operativo potesse inserirsi in una memoria non volatile, potrebbe essere avviato direttamente, ma con sistemi operativi completi come Windows, OSX o Linux questo non è possibile.

Ciò che serve è un piccolo "OS" leggero che può essere caricato all'accensione che esegue le operazioni di base come l'accesso alla memoria e al disco e quindi carica il sistema operativo. Mentre questo potrebbe far parte del sistema operativo stesso e non un'entità separata, ci sono altri motivi per cui potresti voler prima avviare un altro processo:

  1. Aggiornamenti: se il sistema operativo fosse stato riparato in questo modo, sarebbe diventato difficile aggiornarlo se fossero necessarie patch di sicurezza. Si può fare: gli aggiornamenti del firmware avvengono continuamente su dispositivi come router, ecc. Ma questi hanno sistemi operativi relativamente semplici installati.
  2. Flessibilità: un computer è una macchina per scopi generici e lo stesso hardware può eseguire diversi sistemi operativi. Avere un BIOS che quindi carica il sistema operativo dal disco significa che puoi scegliere quale eseguire - puoi anche andare oltre avendo diversi installati fianco a fianco.

Il processo è noto come bootstrap .


1
Quindi la risposta è perché abbiamo molti sistemi operativi diversi? Voglio dire, se avessimo un solo modello di sistema operativo per un hardware specifico, elimineremmo la necessità di un BIOS?
Diogo,

1
Non vedo perché non è possibile che Microsoft
crei

1
Non è necessario che l'intero sistema operativo si adatti alla memoria non volatile (cosa che può fare a meno, è sufficiente una ROM sufficiente: P). Hai solo bisogno del bootstrapper per essere lì.
m0skit0,

1
@ m0skit0 Microsoft non è in grado di creare un BIOS in quanto dovrebbe creare un BIOS diverso per ogni singola scheda madre su cui desidera eseguire il software. :)
Sfondamento

1
Inoltre, @ChrisF, il posizionamento di un sistema operativo su ROM mina in primo luogo l'intero punto di un sistema operativo. Potrebbe avere senso utilizzare la ROM per eseguire direttamente alcuni programmi memorizzati sul processore (il che produrrebbe prestazioni molto migliori), ma il punto centrale di un sistema operativo è di impedire esplicitamente questo tipo di operazione e fornire un'interfaccia software comune per fare così.
Sfondamento

4

Il concetto di PC BIOS deriva da CP / M, un sistema operativo popolare sui computer basati su bus Z-80 "S-100" a 8 bit prima che il PC IBM prendesse il controllo.

CP / M prevedeva che le funzioni dipendenti dall'hardware fossero in una ROM (BIOS). Un'altra parte, caricata dal disco dal bootloader, era il software che supportava il filesystem CP / M (BDOS) e infine il processore dei comandi o "shell" (CCP). L'hardware che CP / M avrebbe dovuto supportare non era molto: un'unità disco, un display, una porta seriale o due (porte COM o AUX) che potevano avere stampanti o modem collegati.

Il BIOS del PC ha eseguito una funzione di bootstrap di base simile a quella di CP / M e DOS ha utilizzato le funzioni del BIOS per eseguire input e output di base, come previsto. I programmatori hanno finito per bypassare queste funzioni perché erano lente. Ciò ha portato i produttori di cloni di PC a metà degli anni '80 a ricreare la piattaforma nel suo insieme (facile come IBM ha documentato il PC originale molto bene dentro e fuori), invece di fornire un BIOS con interfacce compatibili, anche se hanno dovuto farlo anche loro.

A questo punto possiamo dire che, per un sistema operativo moderno, il BIOS non è realmente necessario oltre l'avvio del sistema. Tuttavia ...

A partire dai primi anni '90, l'idea del risparmio energetico prese piede e il BIOS fu incaricato di questo. APM funziona bene con un sistema operativo a singolo tasking come DOS, ma non con veri sistemi operativi multitasking come Windows o Linux. In quel periodo il 386 era in pieno vigore, la CPU Intel che supportava il multitasking reale. DOS e BIOS non sono stati aggiornati in risposta alle nuove funzionalità di questa CPU, soprattutto perché tutte le CPU Intel funzioneranno ancora in modalità di compatibilità a 16 bit legacy per cui è stato progettato il BIOS PC originale. Quindi i sistemi operativi moderni praticamente ignorano / bypassano tutte le funzionalità di input / output simili a CP / M del BIOS, tranne forse durante le prime fasi di avvio.

Alla fine è stato sviluppato ACPI, in gran parte parte del BIOS, che supportava la gestione dell'alimentazione e la configurazione di elementi specifici della piattaforma (spesso laptop). ACPI gestisce anche lo stato finale di ibernazione, sospensione o spegnimento.

Quindi in questi giorni è ACPI ed è il successore, EFI, che mantiene qualcosa come il BIOS una necessità del PC Il concetto generale è che ACPI sia l'interfaccia tra elementi specifici della piattaforma o della scheda madre e il sistema operativo, quindi una build separata di sistema operativo non devono essere realizzati per ogni diverso tipo di scheda madre.

Le schede di sviluppo che ospitano CPU ARM che eseguono Linux (così come l'hardware del telefono cellulare) presentano questo problema. In genere verranno forniti con un firmware solo bootloader come U-boot, ma praticamente il sistema operativo deve supportare ciascuna scheda come piattaforma separata.


3

In un certo senso, hai ragione. BIOS e OS fanno in parte le stesse cose. La separazione tra BIOS e OS è solo per flessibilità.

Il BIOS è in genere creato da un produttore di hardware. L'hardware deve garantire che sia presente una funzionalità di base , ad esempio che un'unità disco possa essere letta e che venga mostrata una visualizzazione di base per diagnostica ed errori. Da qui il nome "Basic Input Output System".

Questo può essere fatto, in una certa misura, senza ulteriore conoscenza dei componenti effettivi realmente presenti sul sistema specifico, poiché tutti devono supportare un certo piccolo standard BIOS. Ciò consente ai fornitori di creare un sistema completo personalizzato. Il BIOS deve solo fare abbastanza per avviare il sistema operativo. Ci sono alcune convenzioni su dove si trovano questi punti di partenza, quindi prova solo uno dopo l'altro. Ciò consente anche l'uso di diversi sistemi operativi sullo stesso hardware. (c'è di nuovo flessibilità)

Una volta che il sistema operativo (o almeno è il bootloader) viene trovato e avviato dal BIOS, il BIOS stesso diventa in gran parte obsoleto. Il sistema operativo moderno utilizza pochissimo o nulla del BIOS in modo funzionale dopo il caricamento.

Se si desidera che il sistema operativo esegua tutto il lavoro, è necessario collocare il sistema operativo in un luogo in cui sia possibile accedervi dall'hardware senza l'aiuto preliminare di un software (ROM). Ciò può essere possibile per alcuni sistemi chiusi, dove la flessibilità non è un problema. Se pensi di costruire il supporto hardware in qualche altro hardware, fondamentalmente stai costruendo di nuovo una sorta di BIOS ...

Un'altra preoccupazione è la dimensione e il costo della memoria. I sistemi operativi completi sono di grandi dimensioni e cercare di ottenere un sistema operativo multi-gigabyte nella ROM è costoso, oltre ai problemi di follow-up di patch e aggiornamento.

Quindi no, non ci sono ragioni tecniche, ma molte pratiche, specialmente per la piattaforma PC flessibile.


3

Per eseguire un programma su un PC moderno, è necessario disporre già di un programma in esecuzione che sappia come utilizzare l'hardware e caricare i programmi in memoria. Questo problema con galline e uova viene risolto impiantando un programma di base nell'hardware stesso.

Questo sistema di input / output di base (BIOS) è molto piccolo e di portata molto limitata, ma fornisce una base sufficiente per caricare ed eseguire caricatori di avvio di secondo livello, come GRUB o NTLDR . Questi caricatori di secondo stadio sono più sofisticati del programma BIOS che consente loro di fornire una base più solida per il sistema operativo adeguato per caricare e assumere il controllo.


Buona spiegazione non tecnica.
Lumaca meccanica,

1

Se una CPU avesse la capacità di indirizzare direttamente un disco rigido, senza fare affidamento su BIOS, o EFI o altro codice nella ROM (o NVRAM o altro), in teoria una CPU del genere potrebbe caricare un sistema operativo dal disco nella RAM e iniziare eseguendolo.

In realtà, in teoria, una tale CPU potrebbe persino eseguire istruzioni senza caricarle nella RAM. Non vi è alcuna ragione teorica che un computer non possa utilizzare un disco rigido come memoria principale. Ma questo sarebbe molto, molto lento.

Ciò significherebbe avere un codice aggiuntivo nella CPU per accedere al disco e cablare alcuni concetti sui dischi, come tabelle di partizione e file system nella CPU. Le CPU in questi giorni sono abbastanza grandi per farlo, ma non sarebbe un approccio molto flessibile o efficiente alla progettazione di una CPU.


Un tempo erano i computer eseguiti direttamente dal disco / tamburo, senza una quantità significativa di RAM.
Daniel R Hicks,

-1

Non ne ha bisogno!

Quello che viene spesso chiamato BIOS è un insieme di 3 cose.

  • Un caricatore di avvio
  • Uno strumento di configurazione: ora per lo più obsoleto, tranne l'ordine di avvio e l'orologio. Il resto dovrebbe essere automatico o impostato dal produttore.
  • Il BIOS: una libreria di routine di output di input per aiutare il sistema operativo a comunicare con l'hardware. Sfortunatamente il BIOS è a 16 bit, obsoleto e non può essere utilizzato dai moderni sistemi operativi, quindi è ampiamente ignorato.

Il boot loader fa parte del BIOS.
Daniel R Hicks,

@Daniel ho riscritto per rendere più chiaro, grazie.
ctrl-alt-delor,
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.