Comment l'ordinateur sait-il que le PC n'a pas été éteint correctement?

92

En fait, cette question m’a frappé à cause des coupures de courant dans ma maison. En cas de coupure de courant, l'ordinateur subit une coupure de courant.

Comment l’ordinateur sait-il que l’arrêt n’a pas été effectué correctement?

Gelée
la source

Réponses:

104

Windows utilise également la méthode Dirty Bit pour détecter si le PC a été éteint correctement:

Lorsqu'il est éteint normalement, le bit est désactivé. Toutefois, en cas de panne de courant ou d’arrêt (forcé) inapproprié, le bit sera toujours actif au prochain démarrage du PC.

Cela signifie que Windows peut suggérer des actions correctives, telles que le démarrage en mode sans échec.

De plus, un PC Windows écrira dans le journal des événements une entrée détaillant le moment et la raison (s'il est connu) de son arrêt. Il écrit également un événement au démarrage du PC.

Arrêt du système

Mise en marche du système

Lorsque le PC redémarre, il peut consulter le journal des événements. S'il ne trouve pas un "événement de fermeture" après le dernier événement de "démarrage", il sait que le PC n'a pas été éteint correctement et qu'il peut y avoir des problèmes de sauvegarde. données etc.

ChrisF
la source
2
La réponse de David ci-dessous n'est-elle pas plus précise? Je pensais que NTFS avait un "bit sale" que le FS détecte lorsqu'il est monté. J'ai toujours supposé que le journal des événements est juste un journal de ce qui est trouvé plutôt que la détection et le raisonnement réels qui le sous-tendent?
HaydnWVN
3
Mais dans une situation de mise hors tension imprévue (sans UPS, évidemment), l'arrêt serait "inattendu" (mentionné dans le journal des événements). Excellente information iciIf 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 le
3
@HaydnWVN Le bit sale du système de fichiers est utilisé pour identifier un démontage anormal, afin que le système d'exploitation sache que le système de fichiers peut être dans un état indéterminé et qu'il peut exécuter un diagnostic (par exemple chkdsk) pour identifier les problèmes potentiels du système de fichiers. C'est pourquoi vous obtenez parfois la boîte de dialogue de réparation lorsque vous branchez des clés USB qui n'ont pas été correctement retirées. En revanche, le terme "bit sale" désigne simplement un champ qui est défini et qui est annulé ultérieurement lorsque le système ou le périphérique est arrêté correctement. Une terminaison incorrecte quitte le champ, elle est donc reconnue lors de la prochaine initialisation de l'appareil.
Polynôme
1
@ChrisF Cette exigence peut être désactivée dans la stratégie de groupe / locale. Et sera contourné s’il est désactivé via quelque chose comme le panneau de configuration d’un hôte VM. Mieux vaut s’appuyer sur les événements Kernel-General # 12 (arrêt normal) et EventLog # 6002 (le dernier arrêt était inattendu). S'il s'agissait d'un BSOD, il devrait également y avoir un BugCheck # 1001. (Tous les événements: source #id.)
Richard le
1
Premièrement, comment l'état de ce bit est-il conservé dans la mémoire volatile après un cycle d'alimentation? Qu'en est-il du double démarrage? La citation sur wikipedia se lit comme une conjecture - bien que je n’ai pas lu le livre Concepts de système d’exploitation auquel il fait référence. Deuxièmement, l'idée que Windows lit le journal des événements pour déterminer si un arrêt complet a eu lieu est évidemment incorrecte. La réponse qui pointe vers bootstat.dat pour Windows est beaucoup plus susceptible d'être correcte que l'une ou l'autre de ces suppositions, en partie parce que cela a plus de sens, mais surtout en raison de la source citée.
chanvre
121

Pour les ordinateurs non basés sur Windows, la détection est généralement effectuée système par fichier. Lorsqu'un système de fichiers est monté en mode lecture / écriture, une entrée est écrite dans le système de fichiers, le marquant comme étant sale. Lorsque le système de fichiers est démonté, une entrée est écrite pour le nettoyer. Au démarrage, le système d'exploitation vérifie si ses systèmes de fichiers principaux sont marqués comme étant sales et s'il le sait, il n'y a pas eu d'arrêt propre, du moins parmi ces systèmes de fichiers.

David Schwartz
la source
29
+1 car la question ne concerne pas un système d'exploitation spécifique.
Trevor Boyd Smith le
42

Dans Windows, selon les auteurs de Windows Internals, 5th ed., Il s’agit du fichier bootstat.dat (situé par défaut dans le répertoire \ boot de la partition système):

Windows utilise un fichier d'état de démarrage ... pour enregistrer le fait qu'il a progressé au cours des différentes étapes du cycle de vie du système, notamment le démarrage et l'arrêt. Cela permet au gestionnaire de démarrage, au chargeur Windows et à l'outil de réparation du démarrage de détecter proprement un arrêt anormal ou un échec et d'offrir à l'utilisateur des options de récupération et de démarrage du diagnostic ...

 

Kreemoweet
la source
3
Source de devis?
Paul DelRe
23
"Windows Internals" de Mark Russinovich et David Solomon avec Alex Ionescu, page 1010.
artm
Pour mettre cela en contraste avec la réponse de ChrisF, le "bit sale" géré par chaque système de fichiers concerne uniquement l'état de ce système de fichiers; ce n'est pas à l'échelle du système. Notez que vous pouvez "déconnecter en toute sécurité" un disque dur amovible - cela efface le bit sale de ce système de fichiers - puis un arrêt inattendu peut se produire.
Jamie Hanrahan
0

Sur certains ordinateurs, une méthode indépendante du système d’exploitation peut être définie dans le BIOS du matériel. Cela dépend du fournisseur de l'ordinateur et du fournisseur du BIOS.

Parmi les principaux acteurs figurent American Megatrends Inc. (AMI), Award et Phoenix Technologies. Regardez ces fabricants pour plus de détails.

Sushi
la source
2
Plutôt que d'agiter votre main et de dire "l'information est là-bas", pourquoi ne pas créer un lien vers des références pertinentes?
G-Man