Как компьютер узнает, что компьютер не был правильно выключен?

92

На самом деле, этот вопрос меня поразил из-за отключения электричества в моем доме. Когда происходит отключение питания, происходит внезапное отключение питания от компьютера.

Как компьютер узнает, что выключение не было сделано правильно?

FrozenKing
источник

Ответы:

104

Windows также использует метод Dirty Bit для определения правильности выключения ПК:

Когда питание выключено как обычно, бит выключен. Тем не менее, в случае отключения питания или неправильного (принудительного) выключения, бит все равно будет при следующем запуске ПК.

Это означает, что Windows может предложить корректирующие действия, такие как загрузка в безопасном режиме.

Кроме того, ПК на базе Windows запишет запись в журнал событий с подробным описанием того, когда и почему (если известно) он был выключен. Он также записывает событие при запуске компьютера.

Система выключена

Запуск системы

Когда компьютер перезагружается, он может проверить журнал событий, и если он не находит «событие выключения» после последнего события «запуска», он знает, что компьютер не был выключен должным образом, и могут возникнуть проблемы из-за несохраненных данные и т. д.

ChrisF
источник
2
Разве ответ Дэвида ниже не является более точным? Я думал, что у NTFS есть «грязный бит», который ФС обнаруживает при монтировании. Я всегда предполагал, что журнал событий - это просто журнал того, что найдено, а не фактическое обнаружение и обоснование этого?
HaydnWVN
3
Но в ситуации незапланированного отключения питания (без ИБП, очевидно) отключение будет «неожиданным» (упомянуто в журнале событий). Отличная информация здесьIf 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 Грязный бит файловой системы используется для идентификации аварийного отключения, чтобы ОС знала, что файловая система может находиться в неопределенном состоянии, и может запустить диагностику (например chkdsk) для выявления потенциальных проблем файловой системы. Вот почему иногда появляется диалоговое окно восстановления при подключении USB-накопителей, которые не были правильно удалены. Напротив, термин «грязный бит» просто означает поле, которое устанавливается и сбрасывается позже, когда происходит надлежащее завершение работы системы или устройства. Неправильное завершение покидает набор полей, поэтому оно распознается при следующей инициализации устройства.
Полином
1
@ChrisF Это требование можно отключить в групповой / локальной политике. И будет обойден, если выключен через что-то вроде панели управления хоста VM. Лучше полагаться на события Kernel-General # 12 (нормальное завершение работы) и EventLog # 6002 (последнее завершение работы было неожиданным). Если это был BSOD, то должен быть и BugCheck # 1001. (Все события: источник #id.)
Ричард
1
Во-первых, как сохраняется состояние этого бита в энергозависимой памяти после цикла питания? А как насчет двойной загрузки? Цитата из Википедии выглядит как гипотеза - хотя я не читал книгу «Концепции операционной системы», на которую она ссылается. Во-вторых, идея о том, что Windows читает журнал событий, чтобы определить, произошло ли чистое завершение работы, явно неверна. Ответ, указывающий на bootstat.dat для Windows, гораздо более вероятен, чем любой из этих предположений, отчасти потому, что он имеет больше смысла, но в основном из-за его цитируемого источника.
конопля
121

Для ПК не на базе Windows обнаружение обычно выполняется для каждой файловой системы. Когда файловая система монтируется в режиме чтения / записи, запись в файловую систему помечается как грязная. Когда файловая система размонтирована, записывается запись, помечающая ее как чистую. При запуске операционная система проверяет, помечены ли ее основные файловые системы как грязные, и если это так, она знает, что не было чистого отключения - по крайней мере, из этих файловых систем.

Дэвид Шварц
источник
29
+1 потому что вопрос не о конкретной ОС.
Тревор Бойд Смит
42

В Windows, как утверждают авторы Windows Internals, 5-е издание, это файл bootstat.dat (по умолчанию находится в каталоге \ boot системного раздела):

Windows использует файл состояния загрузки ... для записи того факта, что он прошел через различные этапы жизненного цикла системы, включая загрузку и завершение работы. Это позволяет менеджеру загрузки, загрузчику Windows и средству восстановления при загрузке обнаруживать ненормальное завершение работы или сбой при чистом завершении работы и предлагать пользователю варианты восстановления и диагностики с загрузкой ...

 

kreemoweet
источник
3
Источник цитаты?
Пол Делре
23
«Windows Internals» Марка Руссиновича и Давида Соломона с Алексом Ионеску, стр. 1010.
artm
Чтобы сопоставить это с ответом ChrisF - «грязный бит», поддерживаемый каждой файловой системой, предназначен только для состояния этой файловой системы; это не для всей системы. Обратите внимание, что вы можете «безопасно отключить» съемный жесткий диск - это очистит грязный бит для этой файловой системы - и затем может произойти неожиданное отключение.
Джейми Ханрахан,
0

На некоторых компьютерах независимый от ОС метод может быть установлен в BIOS оборудования. Это зависит от производителя компьютера и поставщика BIOS.

В число основных направлений входят American Megatrends Inc. (AMI), Award и Phoenix Technologies. Посмотрите на этих производителей для уточнения.

Суши
источник
2
Вместо того, чтобы просто махать рукой и говорить «информация там есть», как насчет ссылки на некоторые релевантные ссылки?
G-Man