Cosa succede se si avvia un computer senza sistema operativo?

Risponderò alla domanda che hai effettivamente fatto e poi risponderò alla domanda che credo tu volessi fare. Il punto chiave è che tutti i computer sono composti da una CPU, una memoria principale e un sistema I/O. Computer diversi variano nel modo in cui questi componenti sono messi insieme, ma tutti li hanno. Senza software, il computer è inutile in quanto tale. Inoltre, generalmente senza un sistema operativo o OS, e altri programmi che girano sopra quell'OS più la formazione per usarli, il computer non è ancora molto utile e non farà molto per voi quando lo accendete.

La realtà è che quando accendete un computer, è un mucchio di rocce calde molto costose e non fa nulla. Niente, nada... inanimato, inutile, morto, divertente quanto un 'mattone' (più in un minuto). Quindi, ... per rendere utile un computer è necessario qualche altra cosa oltre all'hardware (le parti):

  1. un programma scritto nel "set di istruzioni" di quella particolare CPU;
  2. un modo per far entrare quel programma nella memoria del computer che avete;
  3. un modo per dire al computer di 'iniziare' l'esecuzione di quel programma; e
  4. conoscere cosa fare quando lo avete.

Perciò torniamo indietro di qualche passo e proviamo a mappare questo al moderno processore Geniune Intel*64 o compatibile, che è molto probabilmente quello che avete appena acquistato. Si scopre che qualcuno (molto probabilmente una ditta originaria del Massachusetts chiamata Phoenix's Technologies, o un'altra in California chiamata American Megatrends, Inc), ha scritto alcuni programmi per questi chip e li licenzia. Il produttore della vostra scheda madre ha comprato copie su licenza e il diritto di duplicare questi programmi e metterli in un dispositivo chiamato Read-Only Memory o ROM. Le ROM hanno l'interessante proprietà di poter essere scritte in fabbrica una volta e poi 'ricordare' i bit che sono stati programmati all'interno anche quando l'alimentazione viene rimossa.

Quindi, la scheda madre che avete acquistato contiene una ROM che è stata programmata in fabbrica con quei programmi su licenza e, quindi è stata inserita nella memoria del computer, così avete risolto i primi 2 pezzi mancanti. E come si scopre, quando la scheda madre è stata progettata, sono stati aggiunti dei circuiti speciali che vengono utilizzati al 'power-on/reset' per dire al processore di cercare effettivamente un programma dove è stata inserita quella ROM e impostare il 'Program Counter' della CPU in modo tale che inizi l'esecuzione di un programma utilizzando il contenuto di quella ROM (i..

Per completezza nella mia risposta, non c'è bisogno di una ROM, e francamente, per quelli di noi di una certa età, non usavamo computer con ROM al loro interno (le ROM non erano state inventate o erano molto costose a quei tempi). Quindi come appariva il "programma iniziale" nella memoria del computer? Ai vecchi tempi, avevamo degli interruttori a levetta sulla parte anteriore del computer e caricavamo il "programma iniziale di boot loader" nella memoria, che tipicamente era un semplice programma che sapeva come leggere un blocco o due di memoria da un dispositivo I/O, che aveva su di esso un altro programma, che poteva fare di più, ecc. Questo si chiamava 'avvio' del computer perché era simile a un arrampicatore che sale su una corda usando i suoi lacci. Era molto lento e un po' noioso.

La verità è che si potrebbe fare la stessa cosa oggi se si sostituisse la ROM con un modo per inserire un programma nella memoria principale, proprio come si faceva negli anni '60 e '70. Poiché i computer moderni non hanno interruttori a levetta e una 'console' come i vecchi sistemi, è necessario trovare un modo per caricare il primo programma nella memoria principale (cioè risolvere il passo 2).

A partire dai computer costruiti alla fine degli anni '70, le ROM di avvio sono diventate standard come quelle che avete oggi. Il contenuto di quella ROM in un computer moderno ha un nome (cioè i programmi software all'interno). Si chiama BIOS o Basic I/O System del computer. Anche se, se state usando un Intel*64 o compatibile, è più simile alla chiave UEFI o Unified Extensible Firmware Interface [le differenze vanno oltre lo scopo di questa risposta]. Ma il punto è che i contenuti della ROM sono programmi che sono scritti, licenziati e forniti con la scheda madre, ed eseguiti all'accensione della CPU.

Ora arriva la domanda che volevi fare. Il problema è che probabilmente il computer così come è configurato non ti sarà utile. Potresti sostituire tu stesso il contenuto della ROM e programmare l'HW raw e usare direttamente l'hardware del computer. È probabile che se ci provi, avrai un altro 'mattone' quando avrai finito. Infatti, il processo di cercare di sviluppare e caricare un nuovo firmware sui dispositivi vi farà sentire o vedere il termine 'bricking' del computer - che si riferisce a quel processo.

Detto questo, programmatori molto esperti, spesso con altri strumenti, come i programmatori di Phoenix o della stessa Intel, questo è esattamente quello che stanno facendo. Ma probabilmente non è quello che vuoi fare tu... è più probabile che tu voglia usare le ROM che hai per caricare un sistema operativo (OS) e poi per eseguire programmi che girano sopra di esso. Quindi ...

  1. devi fornire un sistema operativo;
  2. devi memorizzarlo da qualche parte; e
  3. devi caricarlo in memoria da qualche parte.

Molte persone usano un sistema operativo di tipo Microsoft e per questo devi andare nei soliti posti. Una volta un utente lo acquistava da loro, anche se francamente non sono sicuro che sia ancora possibile. Controllate con Amazon, NewEgg o simili. Francamente, io sono uno degli autori originali di UNIX, quindi non sono nemmeno sicuro di come si faccia, dato che non eseguo quello che viene spesso chiamato "Winders" dai miei colleghi. Allo stesso modo, Mac OS può anche essere ottenuto da Apple se avete le licenze e gli account adeguati, anche se credo che avrete bisogno di un sistema Apple per scaricarlo per iniziare - quindi dovete guardarvi intorno (google è vostro amico) se volete costruire un cosiddetto "Hackintosh" assumendo che abbiate l'HW adeguato. E vi avverto che la legalità di eseguire il sistema operativo di Apple su qualsiasi cosa che non sia l'HW di Apple è discutibile, quindi non vi sto dicendo di farlo, ma solo che è possibile. Personalmente raccomanderei una moderna implementazione UNIX come FreeBSD o Linux - ancora una volta Google è vostro amico se volete i dettagli di come, ma ancora una volta lo scopo è al di là di questa risposta - sto cercando di spiegare cosa accadrebbe/potrebbe accadere.

Quindi assumo che abbiate un sistema operativo da eseguire come FreeBSD, Linux, Mac OSX, Winders o simili per rispondere al resto della domanda. La domanda ora è: dove memorizzate il sistema operativo e come lo caricate nel computer?

Il sistema operativo deve essere memorizzato su un dispositivo I/O, tradizionalmente questo è stato un disco locale o un nastro o un'unità floppy. Non è necessario che lo sia. Le ROM di oggi possono avviarsi dalla rete usando un protocollo chiamato 'PXE' o Pre-Boot Execution Environment, che Intel ha definito qualche anno fa come un modo per standardizzare l'avvio in rete dei sistemi basati su Intel-compatibili (FWIW Apple usa un suo schema simile chiamato NetBoot).

In tutti i casi, avvio locale o remoto, il sistema operativo (che è un programma) è memorizzato da qualche parte su qualche dispositivo I/O. La ROM sulla scheda madre avvia l'esecuzione della CPU al reset dell'accensione. Questo configura il processore, porta il boot loader, dopo alcuni passi che salterò (perché ogni sistema operativo tende a farlo in modo un po' diverso), alla fine il sistema operativo stesso viene messo in memoria e il PC della CPU viene impostato per iniziare ad eseguirlo.

A seconda del sistema operativo specifico che state usando, ad un certo punto quel sistema operativo eseguirà un programma che esegue l'I/O ai dispositivi che si interfacciano in qualche modo con l'utente umano, probabilmente o attraverso il display e la tastiera o attraverso la rete. Alla fine, il sistema operativo verrà istruito ad eseguire un programma su richiesta dell'utente umano, di solito ci riferiamo a questo come l'esecuzione di un comando. Ora il computer sta facendo qualcosa di 'utile' - cioè sta eseguendo programmi direttamente per te.

Quindi ....

  • il punto è che qualcuno ha scritto programmi per il computer.
  • Sono stati in qualche modo memorizzati da qualche parte per te.
  • Tu (come utente umano) in qualche modo hai chiesto che fossero eseguiti per te e,
  • sono stati in qualche modo caricati in memoria per te.
  • il computer stesso era solo una roccia molto costosa, ma calda. Solo un mattone.
  • Senza software, non era possibile che fosse utile.
  • E infine, ci voleva un po' di allenamento e conoscenza per imparare a interfacciarsi con esso, per fargli fare effettivamente qualcosa di utile. Che sia giocare un gioco, modificare un foglio di calcolo, o sviluppare un altro programma.

Modificato il 6/29/19 per correggere alcuni refusi e chiarire alcune frasi, aggiornato un anno dopo per ripararne altri.