Ich hatte den Eindruck, dass bei einem Computerabsturz etwas schief gelaufen ist und keine Leistung mehr erbracht werden kann.
Ich habe mich gefragt, wie der Computer Dinge speichern kann, bevor er abstürzt.
Ist der Computer wirklich in der Lage zu wissen, wann er abstürzt (und so alle Prozesse zu informieren: " ASAP speichern, weil ich kurz vor dem Absturz bin ")?
Wenn nicht, wie ist es möglich , dass Programme wie Chrome
und Microsoft Word
anbieten können „Wiederherstellung“ Dienste , nachdem der Computer abgestürzt ist?
windows
filesystems
crash
restore
Pacerier
quelle
quelle
Antworten:
Wenn ein Computer "abstürzt", kann dies z. B. auf einen "abrupten" Stromausfall zurückzuführen sein (in diesem Fall kann nichts unternommen werden), oder auf ein böses internes Ereignis (z. B. beschädigte Seitentabellen) In ähnlicher Weise wird verhindert, dass etwas unternommen wird, oder es liegt möglicherweise an einem Zustand, der "weitere Vorgänge" einfach verhindert - möglicherweise können keine neuen Prozesse gestartet werden, möglicherweise kann die Anzeige nicht aktualisiert werden, möglicherweise ist das System einfach nicht mehr im Speicher.
In letzteren Situationen kann das Betriebssystem immer noch in bestimmten Grenzen funktionieren und zumindest die laufenden Festplattenvorgänge abschließen, Dateien schließen usw. Wenn etwas mehr Funktionen möglich sind, kann das Betriebssystem möglicherweise die verschiedenen Anwendungen erkennen Prozesse, um sich sauber herunterzufahren.
Aber selbst wenn das System "schwer" ausfällt, haben das System als Ganzes und einzelne Anwendungen möglicherweise ein System von "Journalen" und / oder "Prüfpunkten" unterhalten, um den Zustand des Systems als Ganzes und einzelne Anwendungen wiederherstellen zu können bis zu einem "atomaren" Punkt, an dem alles "intern konsistent" ist und ein Minimum an wichtigen Daten verloren gegangen ist.
Dies alles wird nicht mit einem einzigen Mechanismus erreicht, sondern mit Funktionsebenen auf System- und Anwendungsebene.
Insbesondere in Bezug auf Stromausfälle kann eine Vorabbenachrichtigung vorliegen oder nicht, und die Vorabwarnung kann einen Sekundenbruchteil oder (bei einer USV oder einer defekten Laptopbatterie) mehrere Minuten betragen. Was getan werden kann, hängt von der Anzahl der Warnungen ab.
In den meisten Fällen ist es bei einem Desktop-System ohne USV am besten, Festplattenvorgänge "stillzulegen", damit sich keine Festplatte in der Mitte eines Schreibvorgangs befindet, wenn die Stromversorgung endgültig unterbrochen wird. Dies verhindert, dass fehlerhafte Sektoren auf der Festplatte generiert werden. In früheren Zeiten, als der RAM viel kleiner war, konnte ausreichend Zeit vorhanden sein (mit großen Kondensatoren im Netzteil oder sogar, wenn die im Rotor des Festplattenlaufwerks gespeicherte Energie zur Stromerzeugung verwendet wurde), um den RAM vor dem Einschalten auf die Festplatte zu schreiben fallen gelassen, aber diese Möglichkeit verschwand so ziemlich, als RAM größer als 100M oder so wurde.
[Und beachten Sie, dass in früheren Zeiten, als Erinnerungen mit magnetischen "Kernen" erstellt wurden, der Arbeitsspeicher von Natur aus erhalten blieb, wenn die Stromversorgung unterbrochen wurde (obwohl ein bestimmtes Wort, das bei einem Stromausfall gelesen / geschrieben wurde, möglicherweise beschädigt wurde). Dies erleichterte den alten Systemen die Wiederherstellung nach einem Stromausfall.]
Bei einer USV-ähnlichen Funktion (die zwischen einigen Minuten und mehreren Stunden zusätzlichen Strom liefert) gibt es jedoch mehrere weitere Optionen. Eine besteht darin, das System einfach herunterzufahren, als ob Sie "Ausschalten" angefordert hätten. Dies führt dazu, dass sich jede Anwendung selbst beendet und das System als Ganzes permanente Tabellen ausschreibt und herunterfährt. Dies kann lange dauern (wie viele von Ihnen sicherlich bemerkt haben). Es ist aber auch möglich, eine "Ruhezustand" -Strategie zu verwenden, bei der RAM als einzelner Block auf die Festplatte geschrieben und dann das System ausgeschaltet wird. Im Szenario "Ruhezustand" wird beim Wiederherstellen der Stromversorgung der Arbeitsspeicher genau an der Stelle zurückgelesen, an der er geschrieben wurde. Hier und da werden einige Bits ausgewechselt, und die Ausführung wird an der Stelle fortgesetzt, an der sie aufgehört hat.
Bei einigen älteren "großen Eisen" -Systemen wurde eine Halb-Ruhezustand-Strategie verwendet, um eine Notabschaltung durchzuführen: Der Speicher wurde wie oben beschrieben ausgeschrieben, aber wenn die Stromversorgung wiederhergestellt und der Speicher eingelesen wurde, trat eine Standardabschaltung auf. Dies geschah, weil einige Bits des Systemstatus (insbesondere in E / A-Controllern) nicht zuverlässig gespeichert / wiederhergestellt werden konnten, um einen fortgesetzten Betrieb zu ermöglichen.
quelle
Chrome und Microsoft Word speichern regelmäßig Ihren aktuellen Status, während Sie arbeiten. Wenn die Anwendung oder der Computer beim Neustart abstürzt, suchen sie nach einem gespeicherten Status auf der Festplatte und stellen ihn für Sie wieder her. Sie müssen den Absturz nicht vorhersagen. Sie retten ständig Ihren Zustand für den Fall, dass etwas schief geht.
quelle
BEARBEITEN: Dies funktioniert nur, wenn eine Anwendung abstürzt, nicht Windows.
Seit Windows Vista gibt es eine neue API, mit der Windows bei einem Absturz eine spezielle Funktion in der Anwendung aufrufen kann, um zu versuchen, Daten wiederherzustellen, bevor sie heruntergefahren werden. Das funktioniert so:
RecoverData()
RecoverData()
in der App ausgeführtRecoverData()
versucht, Daten über das aktuell geöffnete Dokument abzurufen. In der Zwischenzeit pingt Windows weiter, um anzuzeigen, dass die Wiederherstellung noch nicht abgeschlossen ist.RecoverData()
/ time out / stoppt, beendet Windows die App und startet sie neu.Weitere Informationen: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373351(v=VS.85).aspx
quelle
RecoverData()
?Nun, sie speichern nur den aktuellen Status, bevor sie abstürzen. Wie eine automatische Speicherung alle X Sekunden.
Ich denke man muss wirklich unterscheiden:
quelle
Es hängt von der Schwere des Absturzes ab. Bei einem sehr schweren Absturz (auf der untersten Ebene des Computers) wird der Computer einfach angehalten. Die einzige Arbeit, die gespeichert wird, besteht darin, dass jede Anwendung ihre Daten regelmäßig automatisch speichert.
Bei weniger schweren Abstürzen warnt der Computer jedes Programm, das heruntergefahren werden muss. WENN das Programm diese Meldung abhört, speichert das Programm die aktuellen Daten. Diese Meldung wird jedoch nicht von allen Programmen beachtet.
quelle
Die Programme speichern sie regelmäßig in einer Datei auf der Festplatte. Der Computer kann es nicht erkennen. Tatsächlich wird der Absturzspeicherauszug nicht einmal mit dem Festplattentreiber ausgeführt - das System paginiert einfach den gesamten Speicher.
quelle
Ja, das ist völlig richtig. Aus logischer Sicht läuft Ihr Programm jedoch nicht uneingeschränkt auf dem Computer. Das Programm läuft unter dem Betriebssystem!
Nun, im Falle einer BSOD- oder Kernel-Panik stellte das Betriebssystem fest, dass eine wirklich unsichere Sache passieren würde (ungültiger Speicherzeiger, Überschreiben von Speicher, der dem Betriebssystemkern zugewiesen ist, Zugriff auf nicht vorhandene Hardware usw.). .). In diesem Fall fordert das Betriebssystem alle Prozesse auf, die Ausführung anzuhalten, den Inhalt des Arbeitsspeichers auf der Festplatte zu speichern (da das Betriebssystem auch für die Verwaltung der Speicherzuordnung verantwortlich ist) und den Computer sicher herunterzufahren oder neu zu starten.
Einzelne Anwendungen stürzen ab, wenn das Programm eine nicht behandelte Ausnahme auslöst, die sich auf das Betriebssystem überträgt. In diesem Fall stoppt das Betriebssystem die Ausführung des Programms und schließt alle offenen Speicher- / Datei-Handles.
In beiden oben genannten Fällen wird die Programmausführung normalerweise nicht ordnungsgemäß beendet. In diesen Fällen liegt es an den einzelnen Anwendungen, ihre eigenen Daten wiederherzustellen, da sie die Ausführung plötzlich einfach "stoppen".
Gemäß IIRC speichern beide Anwendungen regelmäßig die Anwendungszustände auf der Festplatte, um einen Datenverlust zu verhindern, wenn der oben genannte Zustand eintritt. Beispielsweise speichert Word alle paar Minuten automatisch eine Sicherungskopie Ihres aktuellen Arbeitsdokuments, sodass Sie im Falle eines plötzlichen Neustarts Ihre Daten wiederherstellen können (einige Minuten Arbeit geben oder nehmen), ohne dass Sie dies tun müssen habe alles getan.
Auch hier liegt es in Ihrer Verantwortung, als Entwickler sicherzustellen, dass Ihre Anwendung mit diesen Situationen zurechtkommt.
quelle
kindall
angegeben, nicht wiederhergestellt (da Sie sich , wenn Sie den RAM wiederherstellen würden, im gleichen Ausführungsstatus befinden würden, der den Computer zum Absturz gebracht hat!). Sie können in Windows unter Systemeigenschaften -> Erweitert -> Starten und Wiederherstellen ändern, was auf die Festplatte geschrieben wird. Wie bereitskindall
erwähnt, sind diese Informationen vor allem für Entwickler hilfreich, die herausfinden möchten, was den Fehler verursacht hat.Ja, der Datenwiederherstellungsprozess ist nicht nur für Computerabstürze gedacht, sondern auch für Stromausfälle, Programmabstürze, das Beenden ohne Speichern und vieles mehr.
Was Sie gesagt haben, ist wahr, der Computer kann nicht "wissen", wann er abstürzen wird. Im Fall von Word wird er regelmäßig automatisch gespeichert, damit er diese Daten wiederherstellen kann. Im Falle von Chrome werden wahrscheinlich die Informationen für jeden Tab irgendwo gespeichert und beim erfolgreichen Beenden gelöscht, oder wenn eine neue und andere Sitzung beginnt. Oder wahrscheinlich auch auf andere Weise. Auf diese Weise, wenn dies nicht der Fall ist Am Ende des erfolgreichen Beendens müssen die Daten wiederhergestellt werden.
Ich arbeite (offensichtlich) nicht für Microsoft oder Google, aber das ist wahrscheinlich die Art und Weise (oder in der Nähe der Art und Weise), wie es funktioniert.
quelle
Ein Programm kann ein Flag auf die Festplatte schreiben, das nur so etwas wie "Beim Booten, wenn dieses Flag gesetzt ist, ist etwas schief gelaufen" sagt. Beim Booten wird dieses Flag überprüft, um festzustellen, ob es gesetzt ist. Wenn ja, weiß das Programm, dass etwas schief gelaufen ist.
Das Flag funktioniert immer, da es gesetzt werden kann, sobald das Programm gestartet wird, und deaktiviert werden kann, wenn das Programm normal beendet wird. Wenn das Programm aufgrund eines unerwarteten Fehlers beendet wird, z. B. wenn ein Computer unerwartet ausgeschaltet wird, bleibt das Flag weiterhin gesetzt, da es nicht normal beendet wurde. Dann kann das Programm feststellen, dass es beim letzten Ausführen nicht normal beendet wurde.
quelle
Wie @bamboom sagt, gibt es verschiedene Arten von "Computerabstürzen", die unterschiedlich gehandhabt werden müssen. Tatsächlich unterscheidet sich ein Stromausfall stark von einer ganzzahligen Division durch Null.
Mit vielen Programmiersprachen, die auch Ausnahmen unterstützen (kontrolliertes Verzweigen zu einer Fehlerbehandlungsroutine, wenn etwas völlig schief geht), besteht die Möglichkeit, eine anwendungsweite Fehlerbehandlungsroutine auf oberster Ebene zu haben, die den Status der Anwendung (einschließlich aller offenen Dokumente, vorgenommener Änderungen) speichern kann usw.), wenn ein nicht behandelter Anwendungsfehler auftritt. Die Idee ist dann, zu versuchen, alles zurückzulesen, wenn die Anwendung neu gestartet wird. Abhängig von der Art des Fehlers und der Art und Weise, wie dieser implementiert wird, funktioniert er nicht immer und es liegt natürlich an jeder einzelnen Anwendung, im Fehlerfall und mit den daraus resultierenden Daten etwas Sinnvolles zu tun Eine überraschend effektive Strategie, um dem Benutzer zu helfen, sich nach einem Absturz mit einem Minimum an verlorener Arbeit zu erholen.
quelle
Ich möchte hier auf eine untergeordnete Ebene eingehen, da es einen Tag des Dateisystems gibt.
Sie hätten sich an ein Windows-Betriebssystem erinnern können, das das Dateisystem FAT / FAT16 / FAT32 verwendet. Es gab manchmal Probleme, wenn ein Benutzer einen Stromausfall erlebte und das gesamte System ausfiel. Nach einem Neustart wird angezeigt, dass eine Datei fehlt und der Start nicht möglich ist. Dies geschah, weil FAT32 die Operationen, die es auf transaktionale Weise ausführte, nicht nachverfolgte.
Im Gegensatz empfing neueres NTFS - Dateisystem Journal Unterstützung seiner Infrastruktur, die auf dem niedrige Niveau von Betriebssystem und Hardware - Zugriffsschicht Informationsmitteln in einem stabilen sicheren Zustand durch Aufnahme von Handlungen begangen gehalten werden würde.
quelle
In einigen Anwendungen auf einigen Betriebssystemen ist es möglich, Signale wie Segmentierungsfehler, die auf Speicherzugriffsverletzungen hinweisen, einzubinden. In diesem Fall kann eine einfache Routine so viele Daten wie möglich speichern. Ob diese Daten verwendbar sind oder nicht, ist eine andere Frage - der Absturz hat sie möglicherweise beschädigt. Es ist zwar möglich, dass eine Anwendung nach dem Unterbrechen eines Signals weiter ausgeführt wird, dies wird jedoch nicht empfohlen, da sie sich möglicherweise in einem instabilen Zustand mit beschädigtem Speicher befindet, der weitere Probleme verursachen kann.
Andere Anwendungen verwenden die automatische Speicherung oder eine Kombination aus beiden - dies hängt von den Anforderungen des Programms und der Plattformunterstützung ab, um diese Signale abzufangen.
quelle
Ein Systemabsturz ist nur eine weitere Routine, die vom Betriebssystem ausgeführt wird. Der Grund für einen "Absturz" liegt darin, dass ein Programm oder eine Bibliothek nicht oder nicht ordnungsgemäß geladen werden konnte und die Systemdateien dauerhaft beschädigt werden können. Aus Sicherheitsgründen erzwingt Windows das Herunterfahren / Neustarten und stoppt alle Schreibvorgänge in Systemdateien, bevor diese Dateien von dem betreffenden Programm / der Bibliothek bearbeitet werden dürfen.
Vor dem Herunterfahren / Neustarten werden die gleichen Funktionen ausgeführt wie beim regulären Herunterfahren / Neustart: dh Speichern von Systemdateien usw.
Soweit einzelne Anwendungen (Word / Chrome) Ihren "Fortschritt" speichern, handelt es sich um eine interne Funktion der Anwendung, die Ihren Fortschritt in bestimmten Intervallen speichert (die Sie normalerweise auch in den Programmeinstellungen ändern können). Wenn eine Anwendung / ein System abstürzt, wird nach dem Neustart diese Datei angezeigt und Sie gefragt, ob Sie die Sitzung wiederherstellen möchten.
quelle
Möglicherweise wird das Betriebssystem aufgrund eines Stromausfalls heruntergefahren. Dies ist wohl eine Art Absturz.
Das Netzteil informiert das Mainboard (über eine Signalleitung, nehme ich an) über eine lange Unterbrechung seines Eingangs, den richtigen Wandwechselstrom, lange bevor es seinen Ausgang stoppt, der die richtige Zufuhr von Gleichstrom zum Mainboard darstellt. Es kann dies tun, weil es seinen Strom in großen Kondensatoren speichert. Das Betriebssystem empfängt dieses Signal in Form eines Hardware-Interrupts.
Während dieses langen Intervalls hat ein Schreibpuffer-Dateisystem genügend Zeit, um alle gepufferten Schreibvorgänge auf das permanente physische Speichermedium zu übertragen und einige andere Herunterfahrroutinen auszuführen.
Ein großer Vorteil eines Schreibpuffer-Dateisystems besteht darin, dass durch das Sortieren von Schreibvorgängen die Armbewegungen auf Festplattenlaufwerken verringert werden und diese immer weniger voneinander entfernt werden.
Dies ähnelt dem, was @oleksii in seiner Antwort sagt, mit der Ausnahme, dass in einem Schreibpuffer-Dateisystem abgeschlossene Transaktionen normalerweise nicht sofort übertragen, sondern lediglich gepuffert werden. Bei einem Stromausfall sollten abgeschlossene Transaktionen auf die Festplatte übertragen werden.
quelle
Apps können Signale in C abfangen und bestimmte Daten speichern. Ein Signal, das Sie möglicherweise versehentlich erhalten, ist die SIGFPE-Gleitkomma-arithmetische Ausnahme (ANSI). Fehler sind Division durch Null und Überlauf. Ein weiterer Singal ist SIGINT, der durch Drücken von Strg + C auf der Konsole oder dem Terminal ausgelöst wird, wodurch die App beendet wird
quelle