Gdy komputer „ulega awarii”, może np. Być spowodowany „nagłą” awarią zasilania (w takim przypadku nic nie można zrobić), może to być spowodowane jakimś nieprzyjemnym zdarzeniem wewnętrznym (np. Uszkodzonymi tabelami stron) podobnie uniemożliwia robienie czegokolwiek, lub może wynikać z jakiegoś stanu, który po prostu uniemożliwia „dalsze operacje” - być może nie można uruchomić nowych procesów, być może wyświetlacza nie można zaktualizować, być może w systemie po prostu zabrakło pamięci.
W tych ostatnich sytuacjach system operacyjny może nadal funkcjonować, w ramach limitów, i może co najmniej dokończyć trwające operacje na dysku, ładnie zamknąć pliki itp. Ponadto, jeśli możliwe jest nieco więcej funkcji, system operacyjny może być w stanie poinformować różne aplikacje procesy zamykania się w czysty sposób.
Ale nawet jeśli system przestanie działać „twardo”, system jako całość i poszczególne aplikacje mogły utrzymywać system „dzienników” i / lub „punktów kontrolnych”, aby umożliwić przywrócenie stanu systemu jako całości i poszczególnych aplikacji do „atomowego” punktu, w którym wszystko jest „wewnętrznie spójne” i gdzie utracono minimum ważnych danych.
To wszystko nie jest osiągane za pomocą jednego mechanizmu, ale dzięki warstwom funkcjonalności na poziomie systemu i aplikacji.
W szczególności w przypadku awarii zasilania może wystąpić powiadomienie z wyprzedzeniem, a ostrzeżenie „z wyprzedzeniem” może stanowić ułamek sekundy lub (w przypadku zasilacza UPS lub niesprawnej baterii laptopa) kilka minut. To, co można zrobić, zależy od ilości ostrzeżenia.
W większości przypadków w przypadku systemu stacjonarnego bez zasilacza UPS jest w najlepszym momencie „wyciszyć” operacje dyskowe, aby żaden dysk nie był w środku zapisu, gdy w końcu zaniknie zasilanie. Zapobiega to generowaniu uszkodzonych sektorów na dysku. Kiedy pamięć RAM była znacznie mniejsza, mogło być wystarczająco dużo czasu (z dużymi kondensatorami w zasilaczu, a nawet dziwnie wykorzystując energię zgromadzoną w wirniku napędu dyskowego do wytworzenia elektryczności) na zapisanie pamięci RAM na dysku przed zasilaniem spadła, ale ta możliwość prawie zniknęła, gdy pamięć RAM wzrosła o więcej niż 100 mln.
[I zauważ, że w dawnych czasach, kiedy wspomnienia były tworzone przy pomocy magnetycznych „rdzeni”, pamięć RAM była z natury zachowana po utracie zasilania (chociaż określone słowo odczytywane / zapisywane w przypadku awarii zasilania może być uszkodzone). Ułatwiło to starym systemom odzyskanie zasilania po awarii zasilania.]
Jednak w przypadku czegoś przypominającego zasilacz UPS (który może zapewnić od kilku minut do kilku godzin dodatkowej mocy) istnieje kilka innych opcji. Jednym z nich jest po prostu zamknięcie systemu, tak jakbyś prosił o „wyłączenie zasilania”. Powoduje to, że każda aplikacja kończy się sama, a następnie system jako całość zapisuje stałe tabele i wyłącza się. Może to zająć dużo czasu (jak jestem pewien, że wielu z was zauważyło). Ale możliwe jest również zastosowanie strategii „hibernacji”, w której pamięć RAM jest zapisywana na dysk jako pojedynczy blok, a następnie system wyłączany. W scenariuszu „hibernacji” po przywróceniu zasilania pamięć RAM jest odczytywana dokładnie tam, gdzie została zapisana, kilka bitów tu i tam jest zamazanych, a następnie wykonywanie jest wznawiane od miejsca, w którym zostało przerwane.
W niektórych starszych „dużych żelaznych” systemach zastosowano pół hibernację, aby wykonać awaryjne wyłączenie: Pamięć zostanie zapisana jak wyżej, ale po przywróceniu zasilania i wczytaniu pamięci nastąpi standardowe zamknięcie. Stało się tak, ponieważ niektórych bitów stanu systemu (szczególnie w kontrolerach I / O) nie można było niezawodnie zapisać / przywrócić, aby umożliwić dalszą pracę.