Comment l'ordinateur est-il capable de sauvegarder des choses avant de tomber en panne?


52

J'avais l'impression que lorsqu'un ordinateur est tombé en panne, quelque chose s'est mal passé et il ne peut plus fonctionner.

Je me demandais comment l'ordinateur est capable de sauvegarder des choses avant de tomber en panne?

Est-ce que l'ordinateur est vraiment capable de savoir quand il va planter (et donc d'informer tous les processus: " Sauvegarder dès que possible car je suis sur le point de planter ")?

Sinon, comment est-il possible que des programmes aiment Chromeet Microsoft Wordpuissent offrir des services de "restauration" après une panne de l'ordinateur?


13
J'aime comment la réponse à la question se trouve dans le titre de la question.
Chris

Comment les lumières d'urgence peuvent-elles s'allumer lorsque l'appareil est éteint?
JoelFan

@JoelFan ils ne le font pas si votre batterie / générateur est mort = P
Mechaflash

Réponses:


6

Lorsqu'un ordinateur "tombe en panne", par exemple en raison d'une panne de courant "abrupte" (auquel cas rien ne peut être fait), cela peut être dû à un événement interne désagréable (par exemple, des tables de pages corrompues) qui De même, empêche quoi que ce soit, ou cela peut être dû à une condition empêchant simplement "d'autres opérations" - peut-être que de nouveaux processus ne peuvent pas être démarrés, peut-être que l'affichage ne peut pas être mis à jour, peut-être que le système est à court de stockage.

Dans ces dernières situations, le système d’exploitation peut toujours fonctionner, dans certaines limites, et au moins effectuer les opérations de disque en cours, bien fermer les fichiers, etc. De plus, si un peu plus de fonction est possible, le système d’exploitation peut éventuellement indiquer aux différentes applications processus pour se fermer proprement.

Mais même si le système tombe "en panne", le système dans son ensemble et des applications individuelles peuvent avoir maintenu un système de "journaux" et / ou de "points de contrôle" pour permettre à l'état du système dans son ensemble et à des applications individuelles d'être restaurés à un point "atomique", où tout est "cohérent en interne", et où un minimum de données importantes a été perdu.

Tout cela n'est pas accompli avec un seul mécanisme, mais avec des couches de fonctionnalités au niveau du système et de l'application.

En ce qui concerne spécifiquement les pannes de courant, il peut y avoir ou non notification préalable, et l’avertissement "préalable" peut durer une fraction de seconde ou (avec UPS ou une batterie d’ordinateur portable en panne) plusieurs minutes. Ce qui peut être fait dépend de la quantité d'avertissement.

Dans la plupart des cas, avec un système de bureau sans UPS, il est préférable de "mettre au repos" les opérations de disque de sorte qu'aucun disque ne soit en cours d'écriture lorsque le courant disparaît finalement. Cela empêche de générer des secteurs défectueux sur le disque. Autrefois, lorsque la RAM était beaucoup plus petite, il pouvait rester assez de temps (avec de gros condensateurs dans l’alimentation, ou même, curieusement, en utilisant l’énergie stockée dans le rotor du lecteur de disque pour générer de l’électricité) pour écrire de la RAM sur le disque avant l’alimentation. abandonné, mais cette possibilité a pratiquement disparu lorsque la RAM a dépassé 100 millions d’euros.

[Et notez que, dans les temps anciens, lorsque les mémoires étaient faites avec des "noyaux" magnétiques, la RAM était intrinsèquement préservée lors de la perte de puissance (bien qu'un mot particulier en cours de lecture / écriture en cas de panne de courant puisse être corrompu). Cela a permis à ces anciens systèmes de récupérer plus facilement d'une panne de courant.]

Cependant, avec quelque chose qui ressemble à un UPS (qui peut durer de quelques minutes à plusieurs heures de puissance supplémentaire), il existe plusieurs options supplémentaires. L’une consiste simplement à éteindre le système, comme si vous demandiez une «mise hors tension». Cela provoque la fin de chaque application, puis le système dans son ensemble écrit des tables permanentes et s'arrête. Cela peut prendre beaucoup de temps (comme beaucoup d’entre vous l’ont sûrement remarqué). Mais il est également possible d'utiliser une stratégie de "veille prolongée", dans laquelle la RAM est écrite sur le disque sous la forme d'un bloc, puis le système est mis hors tension. Dans le scénario "hibernation", lors de la restauration de l'alimentation, la RAM est lue exactement à l'endroit où elle a été écrite, quelques bits ici et là sont balayés, puis l'exécution reprend là où elle s'est arrêtée.

Sur certains anciens systèmes de «gros fer», une stratégie semi-hibernate était utilisée pour effectuer un arrêt d'urgence: la mémoire serait écrite comme ci-dessus, mais lorsque le courant serait restauré et que la mémoire serait lue, un arrêt normal se produirait. Cela a été fait parce que certains bits de l'état du système (en particulier dans les contrôleurs d'E / S) ne pouvaient pas être sauvegardés / restaurés de manière fiable pour permettre un fonctionnement continu.


82

Chrome et Microsoft Word enregistrent périodiquement votre état actuel pendant que vous travaillez. Si l'application ou l'ordinateur se bloque, lorsque les applications sont relancées, elles recherchent un état enregistré sur le disque et le restaurent pour vous. Ils n'ont pas besoin de prédire l'accident. ils sauvegardent constamment votre état au cas où quelque chose se passe mal.


10
Ce n'est que partiellement vrai. Les systèmes d'exploitation fournissent désormais des infrastructures pour aider les applications à récupérer des exceptions.
surfasb

3
@surfasb: Pourriez-vous être plus précis? Nous avons toujours réussi à capter les signaux dans les systèmes de type Unix, mais il appartient au programmeur d’appliquer quoi que ce soit.
Dietrich Epp

5
Cette réponse est correcte. La plupart des applications avec reprise sur erreur sauvegardent leurs données périodiquement. Le système d'exploitation ne peut pas savoir quand il est sur le point de planter. Et quand il découvre, c'est trop tard.
Bogdacutu

1
@surfasb, la question posée au sujet du crash de l'ordinateur (vraisemblablement du noyau), et non de l'application faisant l'objet d'une exception, qui est généralement gérée et tout va bien, ou, au mieux, le processus de sauvegarde du noyau ne sauvegarde pas vos documents.
Psusi

62

EDIT: Cela ne fonctionne que lorsqu'une application se bloque, pas Windows.

Depuis Windows Vista, une nouvelle API permet à Windows d’appeler une fonction spéciale de l’application en cas de panne, afin que celle-ci puisse récupérer toutes les données avant leur fermeture. Cela fonctionne comme ceci:

  • L'application démarre
  • App appelle la fonction Windows: quand je tombe en panne RecoverData()
  • ...
  • App bloque
  • Windows s'exécute RecoverData()dans l'application
  • RecoverData() tente de récupérer des données sur le document actuellement ouvert, mais continue à envoyer des requêtes ping à Windows pour lui indiquer qu'il est toujours en train de récupérer.
  • Quand RecoverData()a terminé / expire / arrête le ping, Windows met fin à l'application et la redémarre.

Plus d'informations: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373351(v=VS.85).aspx


8
+1: C'est l'un des outils les plus sous-utilisés, malheureusement. Et aussi, malheureusement, ce n’est pas la réponse la plus votée ??
surfasb

2
@ZippyV cependant, n'est-il pas vrai que si ce n'est pas l'application qui se plante, mais les fenêtres elles-mêmes qui se bloquent, l'ordinateur n'a pas la capacité d'appeler RecoverData()?
Pacerier

12
L'OP pose des questions sur le blocage de l'ordinateur (OS) et non sur celui de l'application. Par conséquent, cette réponse n'est pas pertinente.
vitaut

C'est vrai, dans le cas d'un BSOD, cela ne fonctionnera pas.
ZippyV

Quelle API stupide pour MS à ajouter. Une fois arrivé à ce point, vous ne pouvez plus faire confiance à l’application pour sauvegarder les données. C’est pourquoi les applications sont conçues depuis des décennies pour sauvegarder les données avant que tout ne se passe mal.
Psusi

16

Eh bien, ils ne font que sauvegarder l’état actuel avant qu’ils ne se plantent. Comme une sauvegarde automatique toutes les X secondes.

Je pense qu'il faut vraiment différencier:

  • Incident matériel: uniquement en mesure de récupérer avec les points de contrôle précédents
  • OS Crash: aucun moyen pour une application de sauvegarder des données, le système d'exploitation peut déposer quelque chose comme un vidage mémoire
  • Application crash: les fonctionnalités du système d'exploitation pour le blocage de l'application peuvent enregistrer des informations

Oui, je parlais des plantages plus graves comme les crashs système / matériel
Pacerier le

10

Cela dépend de la gravité de l'accident. Un crash très grave (au niveau le plus bas de l'ordinateur) entraînera simplement son arrêt. Le seul travail enregistré est que chaque application sauvegarde automatiquement ses données périodiquement.

Pour des accidents moins graves, l’ordinateur avertira chaque programme qu’il doit s’arrêter. SI le programme écoute ce message, il enregistre les données actuelles. Cependant, tous les programmes ne prêtent pas attention à ce message.


1
Je ne pense pas que la dernière partie soit réellement possible cependant. Windows ne vous attribue un BSOD que s'il détecte une exception en mode noyau ou une autre erreur fatale qui signifie que certaines données de l'espace adresse du noyau sont corrompues. Comme les programmes en mode noyau (pilotes, etc.) ont un accès illimité à la mémoire, l'erreur ne peut pas être facilement isolée des composants, aussi le système entier doit-il être arrêté en mode noyau. Indiquer aux programmes d’espace utilisateur de sauvegarder les données signifie essentiellement reprendre une grande partie des fonctionnalités du noyau, ce qui est très dangereux.
billc.cn

2
La dernière partie semble faire référence aux blocages de l'espace utilisateur, pas aux BSOD.
3Doubloons

8

Les programmes enregistrent leur état périodique dans un fichier sur disque. L'ordinateur n'est pas capable de le savoir. En fait, le vidage sur incident n’est même pas effectué à l’aide du pilote de disque: le système recherche simplement toute la mémoire en mémoire.


La pagination est effectuée avec le pilote de disque - sans cela, le noyau ne saurait pas écrire sur le disque.
Psusi

@psusi Lorsque le système se bloque, le fichier d'échange est le seul endroit où le noyau sait qu'il peut écrire en toute sécurité.
kinokijuf

Oui, et l’écriture se fait via le pilote de disque.
Psusi

1
Cela se fait via un pilote spécial "dump_atapi.sys" (substitut atapi pour votre contrôleur SCSI), PAS le pilote de disque standard. Je pense qu'il utilise même Int 13h.
kinokijuf

6

J'avais l'impression que lorsqu'un ordinateur est tombé en panne, quelque chose s'est mal passé et il ne peut plus fonctionner.

Oui, c'est complètement vrai. Cependant, d'un point de vue logique, votre programme ne s'exécute pas sans restriction sur l'ordinateur. Le programme est exécuté sous le système d'exploitation!

Je me demandais comment l'ordinateur est capable de sauvegarder des choses avant de tomber en panne? Est-ce que l'ordinateur est vraiment capable de savoir quand il va planter (et donc d'informer tous les processus: "Sauvegarder dès que possible car je suis sur le point de planter")?

Eh bien, dans le cas d’une panique BSOD ou du noyau, le système d’exploitation a déterminé qu’un événement vraiment dangereux se produirait (pointeur de mémoire non valide, écrasement de la mémoire allouée au noyau du système d’exploitation, accès à du matériel non existant, etc.). .) Dans ce cas, le système d'exploitation demande à tous les processus d'interrompre l'exécution, enregistre le contenu de la RAM sur disque (car le système d'exploitation est également responsable de la gestion de l'allocation de mémoire) et arrête ou redémarre l'ordinateur en toute sécurité.

Les applications individuelles elles-mêmes se bloquent lorsqu'une exception non gérée levée par le programme se propage au système d'exploitation. Dans ce cas, le système d'exploitation arrêtera l'exécution du programme et fermera les descripteurs de mémoire / fichiers ouverts.

Dans les deux cas ci-dessus, l'exécution du programme ne se termine généralement pas normalement. Dans ces cas, il appartient aux applications individuelles de récupérer leurs propres données, car elles "arrêtent" soudainement l'exécution.

Sinon, comment des programmes tels que Chrome et Microsoft Word peuvent-ils proposer des services de "restauration" après une panne de l'ordinateur?

IIRC, ces deux applications enregistrent périodiquement les états des applications sur le disque pour éviter la perte de données si la condition susmentionnée se produit. Par exemple, Word enregistre automatiquement une copie de sauvegarde de votre document de travail courant toutes les quelques minutes afin de pouvoir, en cas de redémarrage brutal, récupérer vos données (à quelques minutes de travail) sans avoir à ont fait quelque chose.

Encore une fois cependant, en tant que développeur, il vous incombe de vous assurer que votre application peut gérer ces situations.


"Dans ce cas, le système d'exploitation demande à tous les processus d'interrompre l'exécution, enregistre le contenu de la RAM sur disque et arrête ou redémarre l'ordinateur en toute sécurité." - le contenu de la RAM qui est sauvegardé sur le disque, quand est-il "restauré"?
Pacerier

1
Ils ne le font pas normalement. Cependant, si votre ordinateur plante régulièrement, un programmeur expérimenté peut utiliser ce fichier pour en déterminer la cause.
kindall

@Pacerier comme kindallindiqué, ils ne sont pas restaurés (car si vous avez fait restaurer la RAM, vous seriez dans le même état d'exécution qui a causé l'ordinateur de tomber en panne en premier lieu!). Vous pouvez modifier ce qui est écrit sur le disque dans Windows sous Propriétés système -> Avancé -> Démarrage et récupération. Et encore une fois, comme kindallindiqué, ces informations sont surtout utiles aux développeurs qui tentent de déterminer la cause de l'erreur.
Percée

3

Oui, le processus de restauration des données ne concerne pas uniquement les pannes d'ordinateur, mais bien les pannes de courant, les pannes de programme, les arrêts sans sauvegarde, et bien plus encore.

Ce que vous avez dit est vrai, l'ordinateur ne peut pas "savoir" quand il va se bloquer. Dans le cas de Word, il enregistre périodiquement des sauvegardes automatiques afin de pouvoir restaurer ces données. Dans le cas de Chrome, il stocke probablement les informations relatives à chaque onglet quelque part et les supprime lorsqu’il quitte correctement ou lorsqu’une nouvelle session commence .. ou probablement d’autres façons aussi .. de toute façon, de cette façon, si cela ne l’a pas été. se terminer par un arrêt réussi, il doit restaurer ces données.

Je ne travaille (évidemment) pas pour Microsoft ou Google, mais c'est probablement ainsi (ou presque) que cela fonctionne.


2

Un programme peut écrire sur le disque un indicateur indiquant simplement "Au démarrage, si cet indicateur est défini, une erreur s'est produite". Au démarrage, cet indicateur est vérifié pour voir s'il est défini. Si c'est le cas, le programme sait que quelque chose s'est mal passé.

Le drapeau fonctionne toujours, car il peut être défini dès le démarrage du programme et désactivé lorsque le programme se termine normalement. Si le programme se termine par une erreur inattendue, telle qu'un ordinateur éteint de manière inattendue, l'indicateur sera toujours défini car il ne s'est pas arrêté normalement. Ensuite, le programme est en mesure de dire qu’il n’est pas sorti normalement lors de la dernière exécution.


2

Comme @bamboom le dit, il existe différents types de "crash" d'ordinateur qui doivent être gérés différemment. Effectivement, une panne d'électricité est très différente d'une division entière par zéro erreur, par exemple.

Avec de nombreux langages de programmation prenant également en charge des exceptions (branchement contrôlé sur un gestionnaire d’erreurs lorsque quelque chose ne va pas du tout à fait faux), il est possible d’avoir un gestionnaire d’erreur de niveau supérieur au niveau de l’application qui puisse enregistrer l’état de l’application (y compris les documents ouverts, les modifications apportées). , etc.) lorsqu’une erreur d’application non gérée se produit. L'idée est alors d'essayer de tout relire au redémarrage de l'application. En fonction du type d'erreur et de la manière dont cela est mis en œuvre, cela ne fonctionne pas toujours, et bien entendu, il incombe à chaque application de faire quelque chose de significatif face à une erreur et avec les données résultantes. stratégie étonnamment efficace pour aider l’utilisateur à se remettre d’un accident avec un minimum de travail perdu.


2

Je voudrais un point de bas niveau ici, car il y a une balise de système de fichiers.

Vous auriez pu vous rappeler le système d'exploitation Windows qui utilisait le système de fichiers FAT / FAT16 / FAT32. Il y avait parfois des problèmes lorsqu'un utilisateur subissait une panne de courant et que tout le système tombait en panne. Après avoir essayé de redémarrer, un fichier est manquant et il est impossible de démarrer. Cela est dû au fait que FAT32 n’a pas suivi les opérations effectuées de manière transactionnelle.

En revanche, le système de fichiers NTFS plus récent recevait le support journal de son infrastructure, ce qui signifie que les informations relatives à la couche d’accès au système d’exploitation et au matériel seraient conservées dans un état sûr et stable en enregistrant toutes les actions à valider.


1

Dans certaines applications de certains systèmes d'exploitation, il est possible de prendre en compte des signaux tels que des erreurs de segmentation indiquant des violations d'accès à la mémoire. Dans ce cas, une simple routine peut sauvegarder autant de données que possible. Une autre question est de savoir si ces données sont utilisables ou non: le crash les a peut-être corrompues. Bien qu'il soit possible pour une application de continuer à s'exécuter après avoir interrompu un signal, cela n'est pas recommandé, car elle peut être dans un état instable avec une mémoire corrompue pouvant causer d'autres problèmes.

D'autres applications utilisent la sauvegarde automatique ou une combinaison des deux. Cela dépend des besoins du programme et du support de la plate-forme pour capter ces signaux.


Astuce: Windows ne les a pas.
kinokijuf

1

Une panne système n'est qu'une autre routine exécutée par le système d'exploitation. Un "plantage" survient parce qu'un programme ou une bibliothèque a échoué ou ne s'est pas chargé correctement et qu'il est capable de causer des dommages permanents aux fichiers système. Ainsi, par précaution, Windows impose un arrêt / un redémarrage et arrête toute écriture dans les fichiers système avant que ces programmes ne puissent être édités par le programme / la bibliothèque défaillant.

Avant d’arrêter / de redémarrer, il remplit les mêmes fonctions qu’un arrêt / redémarrage normal: c’est-à-dire enregistrer les fichiers système, etc.

En ce qui concerne les applications individuelles (Word / Chrome) qui enregistrent votre «progression», il s’agit d’une fonction interne de l’application qui enregistre votre progression à des intervalles spécifiques (que vous pouvez généralement modifier également dans les paramètres du programme). Si vous rencontrez un blocage système / application, après le redémarrage, il peut consulter ce fichier et vous demander si vous souhaitez restaurer la session.


1

Vous parlez peut-être de l’arrêt du système d’exploitation en raison d’une panne de courant. C'est sans doute une sorte d'accident.

L'alimentation informe la carte mère (par le biais d'un fil de signalisation, je suppose) de toute longue interruption de son entrée, du courant alternatif mural adéquat, bien avant que celle-ci ne s'arrête, ce qui correspond à la bonne alimentation en courant continu de la carte mère. Il peut le faire car il stocke son électricité dans de gros condensateurs. Le système d'exploitation reçoit ce signal sous la forme d'une interruption matérielle.

Pendant ce long intervalle, le système de fichiers à tampon d’écriture dispose de suffisamment de temps pour transférer toutes les écritures mises en tampon sur le support de stockage physique permanent, ainsi que pour exécuter d’autres routines d’arrêt.

L'un des gros avantages d'un système de fichiers à mémoire tampon en écriture réside dans le fait qu'en triant les écritures, il peut réduire les mouvements des bras sur les disques durs, les rendant ainsi moins distants.

Ceci est similaire à ce que @oleksii a dit dans sa réponse, sauf que dans un système de fichiers en écriture-tampon, les transactions terminées ne sont normalement pas immédiatement transférées, mais simplement mises en mémoire tampon. En cas de panne de courant, les transactions terminées doivent être transférées sur le disque.


0

Les applications peuvent capter les signaux en C et sauvegarder certaines données. L’un des signaux que vous pouvez obtenir accidentellement est l’exception ANSI (arithmétique en virgule flottante) SIGFPE. Les erreurs incluent la division par zéro et le débordement. SIGINT est un autre singal qui est déclenché en appuyant sur les touches ctrl + C de la console ou du terminal, ce qui tue l’application.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.