Come fa il computer a sapere che il PC non è stato spento correttamente?


92

In realtà, questa domanda mi ha colpito a causa di interruzioni di corrente in casa mia. Quando si verifica un'interruzione dell'alimentazione, si verifica una perdita improvvisa di energia dal computer.

Come fa il computer a sapere che l'arresto non è stato eseguito correttamente?

Risposte:


104

Windows utilizza anche il metodo Dirty Bit per rilevare se il PC è stato spento correttamente:

Se spento normalmente, il bit viene spento. Tuttavia, in caso di interruzione di corrente o arresto improprio (forzato), il bit sarà comunque acceso al successivo avvio del PC.

Ciò significa che Windows può suggerire azioni correttive, come l'avvio in modalità provvisoria.

Inoltre, un PC basato su Windows scriverà una voce nei dettagli del registro eventi quando e perché (se noto) è stato chiuso. Scrive anche un evento all'avvio del PC.

Sistema spento

Avvio del sistema

Al riavvio del PC, può controllare il registro eventi e se non trova un "evento di spegnimento" dopo l'ultimo evento di "avvio", sa che il PC non è stato spento correttamente e potrebbero esserci problemi dovuti a non salvato dati ecc.


2
La risposta di David non è più precisa? Pensavo che NTFS avesse un "bit sporco" che l'FS rileva quando montato. Ho sempre supposto che il registro eventi sia solo un registro di ciò che viene trovato piuttosto che il rilevamento e il ragionamento effettivi dietro di esso?
HaydnWVN,

3
Ma in una situazione di spegnimento non pianificato (ovviamente senza UPS) l'arresto sarebbe "inatteso" (menzionato nel registro degli eventi). Grandi informazioni quiIf a program initiates an I/O operation that alters the structure of an NTFS volume - that is, changes the directory structure, extends a file, allocates space for a new file, and so on - NTFS treats that operation as an atomic transaction. It guarantees that the transaction is either completed or, if the system fails while executing the transaction, rolled back.
HaydnWVN,

3
@HaydnWVN Il bit sporco del filesystem viene utilizzato per identificare uno smontaggio anormale, in modo che il sistema operativo sappia che il filesystem potrebbe essere in uno stato indeterminato e può eseguire una diagnostica (ad esempio chkdsk) per identificare potenziali problemi del filesystem. Ecco perché a volte viene visualizzata la finestra di dialogo di riparazione quando si collegano unità USB che non sono state rimosse correttamente. Al contrario, il termine "bit sporco" significa semplicemente un campo impostato e disinserito in seguito quando si verifica la corretta terminazione del sistema o del runtime del dispositivo. Una terminazione impropria lascia il campo impostato, quindi viene riconosciuto alla successiva inizializzazione del dispositivo.
Polinomio,

1
@ChrisF Tale requisito può essere disattivato nella politica di gruppo / locale. E sarà bypassato se spento tramite qualcosa di simile al pannello di controllo di un host di macchine virtuali. Meglio fare affidamento su eventi Kernel-General # 12 (arresto normale) e EventLog # 6002 (l'ultimo arresto è stato imprevisto). Se fosse un BSOD dovrebbe esserci anche un BugCheck # 1001. (Tutti gli eventi: fonte #id.)
Richard,

1
Innanzitutto, come viene mantenuto lo stato di quel bit nella memoria volatile dopo un ciclo di accensione? Che dire del dual boot? La citazione di Wikipedia sembra congettura, anche se non ho letto il libro Concetti sul sistema operativo a cui fa riferimento. In secondo luogo, l'idea che Windows legga il registro eventi per determinare se si è verificato un arresto pulito è ovviamente errata. La risposta che punta a bootstat.dat per Windows ha molte più probabilità di essere corretta rispetto a una di queste ipotesi, in parte perché ha più senso, ma principalmente a causa della sua fonte citata.
canapa,

121

Per i PC non basati su Windows, il rilevamento viene in genere eseguito in base al file system. Quando un filesystem è montato in modalità lettura / scrittura, una voce viene scritta nel filesystem contrassegnandola come sporca. Quando il filesystem è smontato, viene scritta una voce che lo contrassegna come pulita. All'avvio, il sistema operativo verifica se i suoi file system principali sono contrassegnati come sporchi e, in tal caso, sa che non si è verificato un arresto pulito, almeno di tali file system.


29
+1 perché la domanda non si pone su un sistema operativo specifico.
Trevor Boyd Smith,

42

In Windows, secondo gli autori di Windows Internals, 5th ed., È il file bootstat.dat (che si trova di default nella directory \ boot della partizione di sistema):

Windows utilizza un file di stato di avvio ... per registrare il fatto che è progredito attraverso varie fasi del ciclo di vita del sistema, inclusi l'avvio e l'arresto. Ciò consente a Boot Manager, al caricatore di Windows e allo strumento Ripristino all'avvio di rilevare l'arresto anomalo o un arresto in modo pulito e offrire all'utente opzioni di ripristino e avvio diagnostico ...

 


3
Fonte di citazione?
Paul DelRe,

23
"Windows Internals" di Mark Russinovich e David Solomon con Alex Ionescu, pagina 1010.
artm,

Per contrastare questo con la risposta di ChrisF, il "bit sporco" gestito da ciascun file system è solo per lo stato di quel file system; non è a livello di sistema. Si noti che è possibile "disconnettere in modo sicuro" un disco rigido rimovibile - questo cancella il bit sporco per quel file system - e quindi potrebbe verificarsi un arresto imprevisto.
Jamie Hanrahan,

0

Su alcuni computer, è possibile impostare un metodo indipendente dal SO nel BIOS degli hardware. Dipende dal fornitore del computer e dal fornitore del BIOS.

I mojors includono American Megatrends Inc. (AMI), Award e Phoenix Technologies. Guarda questi produttori per dettagli.


2
Invece di semplicemente agitare la mano e dire "l'informazione è là fuori", che ne dici di collegarti effettivamente ad alcuni riferimenti rilevanti?
G-Man,
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.