Cuando una computadora "falla", puede deberse, por ejemplo, a una falla de energía "abrupta" (en cuyo caso no se puede hacer nada), puede deberse a algún tipo de evento interno desagradable (por ejemplo, tablas de páginas corruptas) que de manera similar, impide hacer algo, o puede deberse a alguna condición que simplemente impide "operaciones adicionales" de alguna manera: tal vez no se puedan iniciar nuevos procesos, tal vez la pantalla no se pueda actualizar, tal vez el sistema simplemente se haya quedado sin almacenamiento.
En estas últimas situaciones, el sistema operativo todavía puede funcionar, dentro de los límites, y al menos puede completar las operaciones de disco que estaban en curso, cerrar archivos, etc. Además, si es posible un poco más de función, el sistema operativo puede decirle a las diversas aplicaciones procesos para cerrarse limpiamente.
Pero incluso si el sistema se cae "duro", el sistema en su conjunto y las aplicaciones individuales pueden haber mantenido un sistema de "diarios" y / o "puntos de control" para permitir que el estado del sistema en su conjunto y las aplicaciones individuales sean restauradas a un punto "atómico", donde todo es "internamente consistente", y donde se ha perdido un mínimo de datos importantes.
Todo esto no se logra con un solo mecanismo, sino con capas de funcionalidad a nivel de sistema y aplicación.
Con respecto a las fallas de energía específicamente, puede haber o no una notificación anticipada, y la advertencia de "avance" puede ser una fracción de segundo o (con UPS o una batería defectuosa de la computadora portátil) varios minutos. Lo que se puede hacer depende de la cantidad de advertencia.
En la mayoría de los casos, con un sistema de escritorio sin UPS, es el mejor momento para "detener" las operaciones de disco para que ningún disco esté en el medio de una escritura cuando la energía finalmente desaparezca. Esto evita generar sectores defectuosos en el disco. Solía ser, cuando la RAM era mucho más pequeña, que podía haber suficiente tiempo (con condensadores grandes en la fuente de alimentación, o incluso, usando de forma extraña la energía almacenada en el rotor de la unidad de disco para generar electricidad) para escribir RAM en el disco antes de la alimentación cayó, pero esa posibilidad prácticamente desapareció cuando la RAM creció más de 100M más o menos.
[Y tenga en cuenta que, en los viejos tiempos, cuando los recuerdos se hacían con "núcleos" magnéticos, la RAM se conservaba inherentemente cuando se cortaba la energía (aunque una palabra en particular que se leía / escribía cuando fallaba la energía podía corromperse). Esto facilitó la recuperación de esos viejos sistemas de una falla de energía.]
Sin embargo, con algo parecido a un UPS (que puede dar desde unos minutos hasta varias horas de energía adicional) hay varias opciones más. Una es simplemente apagar el sistema, como si solicitara "apagar". Esto hace que cada aplicación finalice, y luego el sistema en su conjunto escribe tablas permanentes y se apaga. Esto puede llevar mucho tiempo (como estoy seguro de que muchos de ustedes lo han notado). Pero también es posible utilizar una estrategia de "hibernación", donde la RAM se escribe en el disco como un solo bloque, y luego el sistema se apaga. En el escenario de "hibernación", al restablecer la energía, la RAM se vuelve a leer exactamente donde se escribió, unos pocos bits aquí y allá se mezclan, y luego se reanuda la ejecución donde se quedó.
En algunos sistemas antiguos de "gran hierro", se utilizó una estrategia de semi-hibernación para hacer un apagado de emergencia: la memoria se escribiría como se indicó anteriormente, pero cuando se restableciera la alimentación y se leyera la memoria, se produciría un apagado estándar. Esto se hizo porque algunos bits del estado del sistema (particularmente en los controladores de E / S) no se pudieron guardar / restaurar de manera confiable para permitir la operación continua.