Skąd komputer wie, że komputer nie został poprawnie zamknięty?

92

Właściwie to pytanie uderzyło mnie z powodu przerw w dostawie prądu w moim domu. W przypadku awarii zasilania następuje nagła utrata zasilania z komputera.

Skąd komputer wie, że wyłączenie nie zostało poprawnie wykonane?

FrozenKing
źródło

Odpowiedzi:

104

Windows używa również metody Dirty Bit do wykrycia, czy komputer został poprawnie zamknięty:

Po normalnym wyłączeniu bit jest wyłączany. Jednak w przypadku awarii zasilania lub niewłaściwego (wymuszonego) wyłączenia, bit nadal będzie włączony przy następnym uruchomieniu komputera.

Oznacza to, że system Windows może zasugerować działania zaradcze - takie jak uruchomienie w trybie awaryjnym.

Ponadto komputer z systemem Windows zapisuje wpis w dzienniku zdarzeń szczegółowo, kiedy i dlaczego (jeśli jest znany) został zamknięty. Zapisuje również zdarzenie podczas uruchamiania komputera.

Zamknięcie systemu

Uruchomienie systemu

Gdy komputer uruchomi się ponownie, może sprawdzić dziennik zdarzeń, a jeśli nie znajdzie „zdarzenia zamknięcia” po ostatnim zdarzeniu „uruchomienia”, wie, że komputer nie został poprawnie zamknięty i mogą występować problemy z powodu niezapisania dane itp.

ChrisF
źródło
2
Czy odpowiedź Davida poniżej nie jest dokładniejsza? Myślałem, że NTFS ma „brudny bit”, który FS wykrywa po zamontowaniu. Zawsze zakładałem, że dziennik zdarzeń jest tylko dziennikiem tego, co zostało znalezione, a nie faktycznym wykryciem i uzasadnieniem?
HaydnWVN
3
Ale w nieplanowanej sytuacji wyłączenia zasilania (oczywiście bez UPS-a) wyłączenie byłoby „nieoczekiwane” (wspomniane w dzienniku zdarzeń). Świetne informacje tutajIf 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 Brudny bit systemu plików służy do identyfikowania nieprawidłowego demontażu, dzięki czemu system operacyjny wie, że system plików może być w nieokreślonym stanie, i może uruchomić diagnostykę (np. chkdsk) W celu zidentyfikowania potencjalnych problemów z systemem plików. Dlatego czasami pojawia się okno dialogowe naprawy po podłączeniu dysków USB, które nie zostały odpowiednio usunięte. W przeciwieństwie do tego, „brudny bit” oznacza po prostu pole, które jest ustawiane i wyłączane później, gdy nastąpi prawidłowe zakończenie działania systemu lub urządzenia. Nieprawidłowe zakończenie pozostawia ustawione pole, więc jest rozpoznawane przy kolejnej inicjalizacji urządzenia.
Wielomian
1
@ChrisF Wymóg ten można wyłączyć w polityce grupowej / lokalnej. I zostanie ominięty, jeśli zostanie wyłączony przez coś takiego jak panel sterowania hosta VM. Lepiej polegać na zdarzeniach Kernel-General # 12 (normalne zamknięcie) i EventLog # 6002 (ostatnie zamknięcie było nieoczekiwane). Jeśli był to BSOD, powinien również istnieć BugCheck # 1001. (Wszystkie zdarzenia: source #id.)
Richard
1
Po pierwsze, w jaki sposób utrzymywany jest stan tego bitu w pamięci nietrwałej po cyklu zasilania? Co z podwójnym uruchamianiem? Cytat z Wikipedii brzmi jak domniemanie - chociaż nie czytałem w książce Concept System Operating Book, do której się odwołuje. Po drugie, pomysł, że Windows czyta dziennik zdarzeń w celu ustalenia, czy nastąpiło czyste zamknięcie, jest oczywiście błędny. Odpowiedź wskazująca na bootstat.dat dla Windows jest o wiele bardziej prawdopodobna niż którakolwiek z tych domysłów, częściowo dlatego, że ma większy sens, ale głównie ze względu na cytowane źródło.
konopie
121

W przypadku komputerów z systemem innym niż Windows wykrywanie jest zwykle wykonywane dla poszczególnych systemów plików. Gdy system plików jest zamontowany w trybie odczytu / zapisu, do systemu plików zapisywany jest wpis oznaczający, że jest brudny. Kiedy system plików jest odmontowany, zapisywany jest wpis oznaczający, że jest czysty. Podczas uruchamiania system operacyjny sprawdza, czy jego podstawowe systemy plików są oznaczone jako brudne, a jeśli tak, to wie, że nie było czystego wyłączenia - przynajmniej tych systemów plików.

David Schwartz
źródło
29
+1, ponieważ pytanie nie dotyczy konkretnego systemu operacyjnego.
Trevor Boyd Smith
42

W systemie Windows, według autorów Windows Wewnętrznych, wydanie 5, jest to plik bootstat.dat (domyślnie umieszczony w katalogu \ boot partycji systemowej):

Windows używa pliku statusu rozruchu ... do odnotowania faktu, że przechodzi on przez różne etapy cyklu życia systemu, w tym rozruch i zamykanie. Pozwala to Menedżerowi rozruchu, modułowi ładującemu systemu Windows i narzędziu do naprawy systemu podczas uruchamiania wykryć nienormalne zamknięcie lub brak czystego zamknięcia i zaoferować użytkownikowi opcje odzyskiwania i diagnostyczne rozruchu ...

 

kreemoweet
źródło
3
Źródło cytatu?
Paul DelRe
23
„Windows Internals” Marka Russinowicza i Davida Solomona z Alexem Ionescu, strona 1010.
artm
Dla kontrastu z odpowiedzią Chrisa - „brudny bit” obsługiwany przez każdy system plików dotyczy tylko tego systemu plików; nie obejmuje całego systemu. Zauważ, że możesz „bezpiecznie odłączyć” wymienny dysk twardy - to usuwa brudny bit dla tego systemu plików - a następnie może nastąpić nieoczekiwane zamknięcie.
Jamie Hanrahan,
0

Na niektórych komputerach w BIOSie sprzętu może być ustawiona metoda niezależna od systemu operacyjnego. To zależy od dostawcy komputera i dostawcy systemu BIOS.

Mojory obejmują American Megatrends Inc. (AMI), Award i Phoenix Technologies. Spójrz na tych producentów, aby poznać szczegóły.

Sushi
źródło
2
Zamiast machać ręką i mówić „informacja tam jest”, a może link do niektórych odnośników?
G-Man