Come si riavvia un computer?


490

Come può un computer riavviarsi? Dopo che è spento, come si dice di riaccenderlo? Che tipo di software è in grado di farlo?


8
@ jer.salamon: in realtà sono percorsi completamente diversi. Lo spegnimento richiama una routine ACPI che invia un segnale all'alimentatore ATX che spegne i binari della tensione principale.
Ignacio Vazquez-Abrams,

13
Questo è controllato attraverso il BIOS - se la memoria serve, le parole chiave di interesse sono APM e APIC
pst

118
Non si spegne mai veramente al riavvio.
Moab,

10
Non esistono domande stupide. No, forse ci sono - ma penso che questo sia davvero molto interessante. In primo piano come una domanda del candidato settimana .
slhck,

4
Ero solito telelavoro su un server remoto che era fondamentalmente solo un PC senza schermo o tastiera nel datacenter dell'azienda. Il mio server normalmente non era mai spento, ma a volte lo riavviavo dalla mia fine usando WinXP Start-> TurnOffComputer-> Restart, per risolvere le instabilità causate dal test del mio codice. Lavoravo spesso in momenti di mia scelta, quando il datacenter non era presidiato. E 'stato molto faticoso quello che ho accidentalmente selezionato Turn Off come l'ultima opzione, e ha dovuto aspettare fino a due giorni dopo per un operatore di andare a premere il su interruttore per me!
FumbleFingers

Risposte:


598

tl; dr: gli stati di alimentazione nel computer sono controllati da un'implementazione di ACPI (configurazione avanzata e interfaccia di alimentazione). Al termine di un processo di spegnimento, il sistema operativo imposta un comando ACPI che indica che il computer deve essere riavviato. In risposta, la scheda madre reimposta tutti i componenti utilizzando i rispettivi comandi o linee di ripristino, quindi segue il processo di bootstrap. La scheda madre non si spegne mai, reimposta solo vari componenti e si comporta come se il pulsante di accensione fosse appena stato premuto.

Risposta lunga e sconclusionata ma (secondo me) più interessante:

Soft Power e come funziona

Ai vecchi tempi (beh, va bene, per uno studente universitario come me gli anni '90 era molto tempo fa), avevamo schede madri AT (Advanced Technology) con alimentazione ATgestione. Il sistema di alimentazione AT era molto, molto semplice. Il pulsante di accensione sul tuo computer era un interruttore hardware (probabilmente nella parte posteriore del case) e il tuo input da 120vac è passato attraverso di esso. Accendeva e spegneva fisicamente il tuo alimentatore, e quando questo interruttore era in posizione Off tutto nel tuo computer era completamente morto (questo rendeva la batteria CMOS molto importante, perché senza di essa non c'era un alimentatore per mantenere l'hardware ticchettio dell'orologio). Poiché l'interruttore di alimentazione era un meccanismo fisico, non esisteva un modo software per accendere e spegnere. Windows mostrerebbe il famoso messaggio "Ora è sicuro spegnere il computer" perché, sebbene tutto fosse parcheggiato e pronto per spegnersi, non era possibile per il sistema operativo in realtà girare l'interruttore di accensione. Questa configurazione veniva talvolta definita comepotenza , perché è tutto hardware.

Oggi le cose sono diverse, a causa delle meraviglie delle schede madri ATX e della potenza ATX (questa è la tecnologia avanzata eXtended se stai tenendo traccia). Insieme ad una serie di altri progressi (mini-DIN PS / 2, chiunque?), ATX ha portato soft power . Soft power significa che l'alimentazione al computer può essere controllata dal software. Ciò ha comportato alcune modifiche all'importazione:

  • Potenza di standby: è possibile che sia stato visualizzato un connettore "5v SB" o "5v standby" etichettato nei piedini dell'alimentatore. L' alimentazione in standbyè una linea 5v della scheda madre che è sempre accesa, anche quando il computer è spento. Questo è il motivo per cui è importante scollegare o spegnere un hard disk PSU (se presente) durante la manutenzione di computer moderni, perché anche quando è spento è possibile cortocircuitare il SB 5v e danneggiare la scheda madre. Questo è anche il motivo per cui le batterie CMOS non sono più così importanti: l'SB 5v viene utilizzato per sostituire la batteria CMOS ogni volta che l'alimentazione è alimentata dalla rete, quindi la batteria CMOS viene utilizzata solo quando si scollega completamente il computer. La linea 5v SB consente in particolare ai componenti del computer (soprattutto BIOS e adattatori di rete) di continuare a eseguire alcuni semplici software anche quando il computer è spento.
  • Controllo dell'alimentazione intelligente. Se osservi una piedinatura per il connettore della scheda madre (P1) del tuo alimentatore, noterai due pin tipicamente etichettati PS_ON e PS_RDY. Questi indicano "alimentatore acceso" e "alimentatore pronto". Se ti piace sperimentare, prendi un alimentatore non in un computer, collegalo e corti con attenzione una linea di terra (uno dei fili neri) alla linea PS_ON (il filo verde). L'alimentazione si accenderà visibilmente, con la ventola che gira. I componenti della scheda madre che scendono da + 5v SB accendono e spengono l'alimentazione collegando l'alimentazione al pin PS_ON. Poiché ci sono alcuni condensatori e altri componenti nell'alimentatore che impiegano un momento per caricarsi, le tensioni dalle uscite principali dell'alimentatore potrebbero non essere stabili immediatamente dopo l'accensione dell'alimentatore. Questo è lo scopo del pin PS_RDY, si accende quando la logica interna dell'alimentatore determina che l'alimentatore è "pronto" e fornirà un'alimentazione stabile.

Quindi, l'interruttore di accensione non "accende" più il computer. Invece, è collegato ai controller di base della scheda madre, che rilevano che il pulsante è stato premuto ed eseguono una serie di passaggi per preparare il sistema, inclusa l'accensione di PS_ON in modo che l'alimentazione sia disponibile. Il pulsante di accensione non è l'unico modo per attivare il processo di avvio, anche i dispositivi sul bus di espansione possono farlo. Questo è importante perché le tue schede di rete ethernet rimangono effettivamente accese quando il tuo computer è spento e cercano un pacchetto molto specifico spesso chiamato "pacchetto magico". Se rilevano questo pacchetto indirizzato al loro indirizzo MAC, attiveranno il processo di avvio. Ecco come funziona "Wake-on-LAN" (WoL). L'orologio può anche avviare un avvio (la maggior parte del BIOS consente di impostare un'ora in cui il computer dovrebbe avviarsi ogni giorno),

Comprensione del controllo di potenza

Bene, spiego la cosa di Soft Power sia perché penso sia interessante (sempre un motivo chiave per spiegare le cose) sia perché ti permette di capire come l'alimentazione e lo stato di funzionamento / spegnimento del tuo computer sono tutti controllati dal software. Nella maggior parte dei computer attuali, questo sistema software è un'implementazione di Advanced Configuration and Power Interface o ACPI . ACPI è un sistema standardizzato e unificato che consente al software di controllare il sistema di alimentazione del computer. Potresti aver sentito parlare degli stati di alimentazione ACPI. Il meccanismo di base del controllo dell'alimentazione è costituito da questi "stati di alimentazione", il sistema operativo passa attraverso le modalità di alimentazione preparando l'interruttore (i processi di arresto / ibernazione che si verificano prima che l'alimentazione si stacchi effettivamente) e quindi ordina alla scheda madre di cambiare stato di alimentazione . Gli stati di potere si presentano così:

  • G0: funzionante (stato "acceso" del computer)
  • G1: Sleeping (gli stati di standby del computer, divisi in S sottostati)
    • S1: l'alimentazione della CPU e della RAM rimane accesa, ma la CPU non sta eseguendo le istruzioni. I dispositivi periferici sono spenti.
    • S2: CPU spenta, RAM mantenuta
    • S3: tutti i componenti si spengono tranne la RAM e i dispositivi che attiveranno un ripristino (tastiera). Quando dici al tuo sistema operativo di "sospensione", interromperà i processi e quindi entrerà in questa modalità.
    • S4: Ibernazione. Assolutamente tutto è spento. Quando dici al tuo sistema operativo di ibernare, interrompe i processi, salva il contenuto della RAM su disco e quindi entra in questa modalità.
  • G2: Soft Off. questo è lo stato "spento" del tuo computer. L'alimentazione è spenta per tutto tranne che per i dispositivi che possono attivare un avvio.
  • G3: meccanico spento.

Come avviene effettivamente il reset

Noterai che il riavvio non è uno di questi stati. Quindi cosa succede realmente quando il tuo computer si riavvia? La risposta potrebbe essere sorprendente, perché dal punto di vista della gestione dell'energia non è quasi nulla . Esiste un comando di ripristino ACPI. Quando si dice al sistema operativo di riavviarsi, segue il normale processo di arresto (arresta tutti i processi, esegue un po 'di manutenzione, smonta i file system, ecc.), Quindi come passaggio finale, invece di inviare la macchina allo stato di alimentazione G2 (come se lo avessi semplicemente detto a Spegni) imposta il comando Reimposta. Questo è generalmente indicato come "Registro di ripristino", poiché come la maggior parte dell'interfaccia ACPI è solo un indirizzo su cui scrivere un valore specifico per richiedere un ripristino. Citerò la specifica 2.0 su cosa fa:

Il meccanismo di ripristino ACPI opzionale specifica un meccanismo standard che fornisce un ripristino di sistema completo. Quando implementato, questo meccanismo deve ripristinare l'intero sistema. Ciò include processori, logica di base, tutti i bus e tutte le periferiche. Dal punto di vista OSPM, affermare che il meccanismo di ripristino è l'equivalente logico per spegnere e riaccendere la macchina. Dopo aver ottenuto il controllo dopo un ripristino, OSPM eseguirà le azioni in modo simile a un avvio a freddo.

Quindi, quando viene impostato il registro di ripristino, accadono alcune cose in sequenza.

  • Tutta la logica è ripristinata. Ciò significa inviare i rispettivi comandi di ripristino a vari bit di hardware tra cui CPU, controller di memoria, controller di periferiche, ecc. Nella maggior parte dei casi ciò significa semplicemente accendere un filo RST fisico, come mostrato da AndrejaKo.
  • Il computer viene quindi avviato. Questa è la parte "eseguire le azioni in modo simile a un avvio a freddo". La scheda madre esegue gli stessi passaggi che avrebbe se l'alimentatore fosse appena pronto dopo aver premuto il pulsante di accensione.

L'effetto finale di questi due passaggi (che in realtà si interrompe in molti più passaggi) è che sembra tutto esattamente come il computer appena avviato, ma il potere è stato effettivamente per tutto il tempo. Ciò significa meno tempo necessario per l'arresto e l'avvio (poiché non è necessario attendere che l'alimentazione sia pronta) e, soprattutto, consente l'avvio del sistema operativo all'avvio. Ciò significa che non è necessario utilizzare un altro trigger di avvio (WoL ecc.) E consente di utilizzare il riavvio come un modo efficace per ripristinare il sistema in remoto, quando non si dispone di un modo per avviare l'avvio.


Questa è stata una risposta lunga. Ma hey, spero che tu sappia di più sulla gestione dell'alimentazione del computer ora. Ho sicuramente imparato alcune cose ricercando questo.


3
+1. Risposta molto istruttiva e utile. Solo un punto: PS_ON è attivo in basso, ovvero commutato su 0V anziché + 5VSB per attivare le uscite principali.
MikeJ-UK,

2
Per i dispositivi USB che avviano un avvio, alcuni BIOS hanno un'opzione per riattivare il computer con un doppio clic o la pressione di un tasto. Inoltre, alcune tastiere Mac hanno i pulsanti di accensione (una tradizione che risale all'originale).
Stuart P. Bentley,

1
Ottima risposta, ho sicuramente imparato molto. Rimane comunque una domanda: dal punto di vista della scheda madre, qual è la differenza tra gli stati S4 e G2? Il salvataggio della RAM su disco viene eseguito dal sistema operativo, quindi S4 suona proprio come "soft off" per l'hardware.
EMP,

1
Credo che S4 sia funzionalmente equivalente a G2, ma la differenza è memorizzata. Alcuni BIOS sembrano eseguire un "POST rapido" a partire da S4 ma un POST completo a partire da G2. Non penso che ci sia alcun motivo per questo, a parte il fatto che la gente vuole che S4 riprenda ad essere veloce.
jcrawfordor,

1
Questo è in realtà un po 'semplicistico; ci sono (molti) modi non ACPI per riavviare il computer, e talvolta ACPI da solo non funziona: superuser.com/questions/294681/…
Tobu

81

Ecco un punto di partenza:

I chip di solito non si spengono e quindi si accendono. Invece, c'è una linea di ripristino che porterà il processore nel cosiddetto stato di ripristino quando di solito tutta la memoria viene cancellata e il processore sembra appena acceso. Mentre quel pin è tenuto alto (o basso, a seconda del processore), il processore è in reset. Una volta rilasciato, il pin continuerà ad avviarsi normalmente, proprio come se fosse acceso per la prima volta. Il punto di ciò è che non esiste alcun taglio di potenza.

Quindi, come fa questa scala a sistemi più grandi come i PC moderni? Beh, i computer moderni sono fatti di computer che a volte sono fatti dai computer stessi. Pertanto, quando si imposta il ripristino del computer, i "computer" che fanno sì che il computer inizieranno a salvare i loro stati (se il ripristino è controllato), o semplicemente hanno i loro piedini di ripristino estratti.

Alcuni processori e microcontrollori (che sono computer autonomi in miniatura, in genere 20 anni indietro rispetto ai moderni computer desktop) possono ripristinarsi mediante switch interni. Come ho detto, una volta sparito il segnale che genera il ripristino, il computer si avvierà. Quindi la premessa nella domanda non è del tutto corretta. Il computer non sa quando accenderlo. Sapere quando deve essere "spento" o in reset e quando il segnale che lo mantiene è sparito, si accenderà.

Questo comportamento può apparire strano sul computer moderno che può essere impostato per accendersi in un momento specifico o su rete e così via. Come ho detto, i computer sono fatti di computer. Quindi, mentre il processore principale potrebbe essere spento, potrebbero esserci numerosi altri chip e microcontrollori all'interno dei quali sono attivi. Il caso più ovvio è l'orologio in tempo reale che è spesso alimentato a batteria. Può quindi accendere altri chip che accenderanno altri chip e la reazione a catena continuerà fino a quando l'intero computer non sarà acceso. Sui computer di oggi, c'è una linea PSU chiamata +5 VDC Standby Voltage. Fornisce circa 50 mW di potenza a vari dispositivi che sono accesi quando il computer è "spento".

Un po 'di curiosità: reimpostare il pin sul processore Intel 386 EX è il numero pin 110.

386EX scheda tecnica figura 2

Su Intel i7-900 è il numero di terra AL39.

Spero che qualcuno sia in grado di fornire una risposta che spieghi come funzionano le cose dal punto di vista di alto livello, dal momento che è un sistema abbastanza complicato.


Caspita, risposta approfondita.
Seth Carnegie,

13
@Seth Carnegie Non è eccezionale. Ho appena toccato le cose di basso livello che sono vere per la maggior parte dei computer, da quella in un frigorifero al PC. Non ho nemmeno menzionato ACPI, APM e altri moderni sistemi di alimentazione o come sui vecchi PC il microcontrollore Intel 8042 quale controller la tastiera potrebbe ripristinare il processore, come funziona il POST, ripristinare i vettori e molte altre cose.
AndrejaKo

1
@netvope Troppo da immaginare, direi. Probabilmente ne hai almeno uno nel mouse, uno nella tastiera, più di 10 per le parti più elementari della scheda madre (anche se prendiamo in considerazione i "chipset" altamente integrati), forse uno nell'unità di alimentazione, almeno uno in ogni unità (più probabilmente 2-3), più in ogni scheda di espansione ... Anche i monitor sono un affare serio e la mia stampante ora ha più RAM del mio primo computer desktop.
AndrejaKo

4
A proposito di memoria, le cache di alcuni nuovi HDD e CPU sono ora più grandi della RAM del primo computer che ho usato. Ora possiamo eseguire Windows 95 interamente nella cache L2 e mantenere l'intera partizione di sistema nella cache dell'unità!
netvope,

27

Questo post sul blog descrive come Linux innesca un riavvio.

Estratto:

Linux ha diversi modi per ripristinare un x86. Alcuni di essi sono solo a 32 bit e quindi li ignorerò perché onestamente proprio quello che stai facendo della tua vita. Inoltre, sono orribili. Quindi, questo ci lascia con cinque di loro.

  • kbd - riavvia tramite il controller della tastiera. Il PC IBM originale aveva la linea di ripristino della CPU collegata al controller della tastiera. La scrittura del valore magico appropriato pulsa la linea e la macchina si ripristina. Tutto ciò è molto semplice, tranne per il fatto che le macchine moderne non hanno controller di tastiera (in realtà fanno parte del controller incorporato) e anche le macchine più moderne non pretendono nemmeno di avere un controller di tastiera. Ora i controller integrati eseguono il software. E, come tutti sappiamo, il software è terribile. Ma, peggio ancora, il software sul controller incorporato è stato scritto dagli autori del BIOS. Quindi, chiaramente, qualsiasi pretesa che ciò funzioni mai è una sorta di finzione elaborata. Alcune macchine sono molto esigenti sul fatto che l'hardware si trovi nello stato esatto in cui Windows dovrebbe programmare. Alcune macchine funzionano 9 volte su 10 e quindi si bloccano a causa di alcuni problemi di temporizzazione. E altri semplicemente non funzionano affatto. Evviva!

  • triplo: tenta di generare un triplo errore. Questo viene fatto caricando una tabella descrittore di interrupt vuota e quindi chiamando int (3). L'interruzione ha esito negativo (non esiste un IDT), il gestore degli errori non riesce (non esiste un IDT) e la CPU entra in una condizione che, in teoria, dovrebbe innescare un reset. Solo che non sembra esserci un requisito per cui ciò accada e semplicemente non funziona su un sacco di macchine.

  • pci: in realtà non pci. L'accesso tradizionale allo spazio di configurazione PCI si ottiene scrivendo un valore a 32 bit sulla porta io 0xcf8 per identificare il bus, il dispositivo, la funzione e il registro di configurazione. La porta 0xcfc contiene quindi il registro in questione. Ma se scrivi la coppia appropriata di valori magici su 0xcf9, la macchina si riavvierà. Spettacolare! E non standardizzato in alcun modo (certamente non parte delle specifiche PCI), quindi diversi chipset possono avere requisiti diversi. Booo.

  • efi: i servizi di runtime EFI forniscono un punto di ingresso per riavviare la macchina. Di solito funziona anche! Fintanto che i servizi di runtime EFI funzioneranno, il che potrebbe essere un tratto.

  • acpi: le versioni recenti delle specifiche ACPI consentono di fornire un indirizzo (in genere spazio di memoria o IO di sistema) e un valore per scrivere lì. L'idea è che scrivere il valore sull'indirizzo resetta il sistema. Si scopre che così spesso fallisce. È anche impossibile rappresentare il metodo di riavvio PCI tramite ACPI, poiché il metodo di riavvio PCI richiede una coppia di valori e ACPI ne fornisce solo uno.


15
Questo è rilevante, ma la risposta sarebbe più utile se inserisci qui un estratto delle informazioni dell'altra pagina.
Calvinf,

1
tl; dr ci sono molti modi per riavviare; alcune schede sono abbastanza rotte che fingono di essere finestre , un'euristica che comporta alcuni tentativi e dormire un po ', è l'unico modo.
Tobu,

10

Aggancia una posizione I / O che abbassa una linea di dati che dice alla CPU che dovrebbe interrompere qualsiasi cosa stia facendo e iniziare a eseguire il codice da una certa posizione nel BIOS.


... e quella posizione è specificata nel codice che viene passato alla chiamata di riavvio del sistema?
Knight Samar,

1
@Knight Samar: No; la posizione I / O è generalmente una costante di architettura, che il kernel conosce. Puoi vederlo ad esempio nel codice di riavvio di Linux, come arch / x86 / kernel / reboot.c.
sleske,

qualcuno ha una buona collaborazione per ulteriori letture in merito?
Matthias Krull,

@ mugen.kenichi e tutti, un amico mi ha dato questo per fare riferimento a howstuffworks.com/bios.htm/printable
Knight Samar


10

Ai vecchi tempi prima della gestione dell'alimentazione, i computer potevano ancora riavviarsi, ovviamente. (Qualcuno ricorda quando un programma bloccato significava che dovevi usare Ctrl + Alt + Canc per riavviare il computer?)

Sul mio vecchio 486, il comando assembly language JMP FFFF:0000(ovvero impostare il puntatore di istruzioni della CPU su detto indirizzo) causerebbe il riavvio dell'intero computer. In altre parole, FFFF: 0000 risolve un percorso nel BIOS che contiene istruzioni su cosa dovrebbe fare il computer al primo avvio. Sospetto che il pin di reset descritto dalla risposta di AndrejaKo, o i pulsanti di reset nei giorni di pre-gestione dell'alimentazione, forzerebbero anche il puntatore di istruzioni allo stesso indirizzo.

Una ricerca su Google per JMP FFFF: 0000 rivela molte pagine interessanti su questo.


3
È stato inoltre necessario scrivere un valore specifico su 0040: 0072 per determinare se era un avvio a freddo (0x0000) o caldo (0x1234).
Synetech,

9

C'è anche una cosa chiamata watchdog. Questo dispositivo funge da interruttore di un uomo morto. Il computer deve segnalare al cane da guardia ogni minuto che è ancora vivo. Quando il computer si arresta in modo anomalo, ad esempio eseguendo un ciclo senza fine, non riuscirà a segnalare al cane da guardia che sta ancora funzionando come previsto, in quale occasione il cane da guardia eseguirà un ripristino hardware. Ciò è stato dimostrato nella popolare serie tv del terminatore, in cui un robot è stato messo fuori uso da un aumento di potenza ad alta tensione. si ripristinerebbe da solo in 2 minuti.


2
Questo è corretto, ma in realtà non risponde alla domanda.
sleske,

4
Esistono watchdog che riavvieranno effettivamente l'intero computer? So che a volte vengono utilizzati per vari microcontrollori all'interno del computer, ma ce n'è uno a livello di intero computer? La mia esperienza personale mi porta a dire di no, ma alcune prove a favore o contro sarebbero benvenute.
AndrejaKo

5
@AndrejaKo: Lavoravo per un'azienda che produceva server di comunicazione (essenzialmente server blade con modem collegati). Avevano un timer watchdog che era collegato ai pin di reset sulla scheda madre. Il timer veniva periodicamente bloccato da un'utilità in background in esecuzione sulla scheda madre, quindi se il processore si bloccava, il watchdog alla fine spingeva il pulsante di ripristino. Era legato a un circuito che rendeva occupata la linea telefonica mentre la scheda madre si riavviava.
Robert Harvey,

4

Di nuovo sul vecchio PC-1 IBM, il controller della tastiera, stranamente, ha gestito il riavvio. IBM ha incorporato un piccolo microprocessore per gestire la tastiera e aveva alcune linee I / O di riserva, quindi hanno usato una delle linee per guidare la linea di reset della CPU principale. Un comando inviato al controller della tastiera comporterebbe il ripristino della CPU come se fosse appena stata accesa l'alimentazione.

Immagino che questa tradizione sia proseguita bene nell'era "AT", e che potrebbero esserci tracce di ACPI oggi.

Aggiunto: c'è un dettaglio interessante sullo schema di reset sopra. Durante la sequenza di avvio iniziale, il codice ha cercato un modello particolare nella RAM che potrebbe essere stato impostato dal codice precedentemente eseguito. Se questo codice era presente, alcuni dei test diagnostici POST (power-on self-test) sono stati saltati. Il modello sarebbe presente solo su uno stivale "caldo".

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.