Tenía la impresión de que cuando una computadora fallaba, algo salía mal y ya no podía funcionar.
Me preguntaba cómo es que la computadora puede guardar cosas antes de que falle.
¿Es la computadora realmente capaz de saber cuándo va a fallar (y así informar a todos los procesos: " Guardar lo antes posible porque estoy a punto de fallar ")?
Si no es así, ¿cómo es posible que a los programas les guste Chrome
y Microsoft Word
pueda ofrecer servicios de "restauración" después de que la computadora se haya bloqueado?
windows
filesystems
crash
restore
Pacerier
fuente
fuente
Respuestas:
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.
fuente
Chrome y Microsoft Word guardan periódicamente su estado actual mientras trabaja. Si la aplicación o la computadora falla, cuando las aplicaciones se reinician, buscan un estado guardado en el disco y lo restauran por usted. No necesitan predecir el choque; constantemente están salvando su estado en caso de que algo salga mal.
fuente
EDITAR: esto solo funciona cuando una aplicación falla, no Windows.
Desde Windows Vista, hay una nueva API que le permite a Windows llamar a una función especial en la aplicación cuando se bloquea para que pueda intentar recuperar cualquier información antes de que se cierre. Funciona así:
RecoverData()
RecoverData()
en la aplicaciónRecoverData()
intenta recuperar datos sobre el documento abierto actualmente, mientras tanto, sigue haciendo ping a Windows para indicar que todavía está ocupado recuperándose.RecoverData()
finaliza / agota el tiempo de espera / deja de hacer ping, Windows finaliza la aplicación y la reinicia.Más información: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373351(v=VS.85).aspx
fuente
RecoverData()
?Bueno, solo guardan el estado actual antes de que se bloqueen. Como un guardado automático cada X segundos.
Creo que uno realmente tiene que diferenciar:
fuente
Depende de la gravedad del accidente. Un choque muy severo (en el nivel más bajo de la computadora) hará que la computadora simplemente se detenga. El único trabajo que se guarda es que cada aplicación guarde automáticamente sus datos periódicamente.
Para bloqueos menos severos, la computadora advertirá a cada programa que necesita apagarse. SI el programa escucha este mensaje, aquí es donde el programa guardará los datos actuales. Sin embargo, no todos los programas prestan atención a este mensaje.
fuente
Los programas guardan su estado periódicamente en un archivo en el disco. La computadora no es capaz de saberlo. De hecho, el volcado por caída ni siquiera se realiza utilizando el controlador de disco: el sistema simplemente pagina toda la memoria.
fuente
Sí, esto es completamente cierto. Sin embargo, desde una perspectiva lógica, su programa no se ejecuta sin restricciones en la computadora. El programa se ejecuta bajo el sistema operativo!
Bueno, en el caso de un BSOD o kernel panic, el sistema operativo determinó que algo realmente inseguro iba a suceder (puntero de memoria no válido, sobrescribir alguna memoria asignada al kernel del sistema operativo, acceso a hardware inexistente, etc. .). En ese caso, el sistema operativo exige que todos los procesos detengan la ejecución, guarda el contenido de la RAM en el disco (ya que el sistema operativo también es responsable de administrar la asignación de memoria) y apaga o reinicia la computadora de manera segura.
Las aplicaciones individuales se bloquean cuando el programa genera una excepción no controlada que se propaga al sistema operativo. En este caso, el sistema operativo detendrá la ejecución del programa y cerrará los identificadores de memoria / archivo abiertos.
En los dos casos anteriores, la ejecución del programa no suele finalizar correctamente. En estos casos, depende de las aplicaciones individuales recuperar sus propios datos, ya que de repente simplemente "detienen" la ejecución.
IIRC, ambas aplicaciones guardan periódicamente los estados de la aplicación en el disco para evitar la pérdida de datos si se produce la condición mencionada anteriormente. Por ejemplo, Word guarda automáticamente una copia de seguridad de su documento de trabajo actual cada pocos minutos para que, en caso de un reinicio forzado repentino, pueda recuperar sus datos (dar o tomar unos minutos de trabajo) sin tener que hacerlo. He hecho cualquier cosa.
Sin embargo, una vez más, como desarrollador, es su responsabilidad asegurarse de que su aplicación pueda manejar estas situaciones.
fuente
kindall
declaró, ellos no se restauran (puesto que si lo hizo restaurar la memoria RAM, debería estar en el mismo estado de ejecución que causó el equipo se bloquee en el primer lugar!). Puede cambiar lo que está escrito en el disco en Windows en Propiedades del sistema -> Avanzado -> Inicio y recuperación. Y nuevamente, como sekindall
indicó, esta información es principalmente útil para los desarrolladores que intentan determinar qué causó el error.sí, el proceso de restauración de datos no es solo por fallas en la computadora, es por cortes de energía, fallas en el programa, salir sin guardar y mucho más ...
Lo que usted dijo es cierto, la computadora no puede "saber" cuándo se va a bloquear, en el caso de Word, guarda automáticamente periódicamente para poder restaurar esos datos. En el caso de Chrome, probablemente almacena la información de cada pestaña en algún lugar y la elimina al salir con éxito, o cuando comienza una sesión nueva y diferente ... o probablemente de otras maneras también ... de todos modos, de esa manera, si no termina con un cierre exitoso, tiene esos datos para restaurar.
Yo (obviamente) no trabajo para Microsoft o Google, pero esa es probablemente la forma en que funciona.
fuente
Un programa puede escribir una marca en el disco que simplemente diga algo como "En el arranque, si esta marca está configurada, entonces algo salió mal". En el arranque, se marca esa bandera para ver si está configurada. Si es así, el programa sabe que algo salió mal.
El indicador siempre funciona, ya que se puede configurar tan pronto como se inicia el programa y apagarse cuando el programa sale normalmente. Si las salidas del programa se deben a un error inesperado, como una computadora que se apaga inesperadamente, la bandera aún se establecerá ya que no salió normalmente. Luego, el programa puede decir que no salió normalmente la última vez que se ejecutó.
fuente
Como dice @bamboom , hay varios tipos diferentes de "bloqueos" informáticos que deben manejarse de manera diferente. Efectivamente, un corte de energía es muy diferente de, digamos, una división entera por cero error.
Con muchos lenguajes de programación que también admiten excepciones (bifurcación controlada a un controlador de errores cuando algo sale completamente mal), existe la posibilidad de tener un controlador de errores de nivel superior para toda la aplicación que pueda guardar el estado de la aplicación (incluidos los documentos abiertos, los cambios realizados , etc.) cuando se produce un error de aplicación no controlada. La idea es intentar leerlo todo cuando se reinicie la aplicación. Dependiendo del tipo de error y exactamente cómo se implementa, no siempre funciona, y, por supuesto, depende de cada aplicación por separado hacer algo significativo ante un error y con los datos resultantes, pero puede ser un problema. estrategia sorprendentemente eficaz para ayudar al usuario a recuperarse de un accidente con una cantidad mínima de trabajo perdido.
fuente
Me gustaría un punto de bajo nivel aquí, ya que hay una etiqueta de sistema de archivos.
Podrías haber recordado el sistema operativo Windows que usaba el sistema de archivos FAT / FAT16 / FAT32. A veces hubo problemas cuando un usuario experimentó un corte de energía y todo el sistema se cayó. Después de intentar reiniciar, diría que faltaba un archivo y no es posible iniciarlo. Esto sucedió porque FAT32 no realizó un seguimiento de las operaciones que realizaba de manera transaccional.
En contraste, el sistema de archivos NTFS más nuevo recibió soporte diario de su infraestructura, lo que significa que en el bajo nivel de OS y la información de la capa de acceso al hardware se mantendría en una condición segura estable al registrar cualquier acción que se comprometiera.
fuente
En algunas aplicaciones en algunos sistemas operativos, es posible conectar señales como fallas de segmentación que indican infracciones de acceso a la memoria. En este caso, una rutina simple puede guardar tantos datos como sea posible. Si esos datos son utilizables o no es otra cuestión: el bloqueo puede haberlos corrompido. Si bien es posible que una aplicación continúe ejecutándose después de que interrumpe una señal, no se recomienda, ya que puede estar en un estado inestable con memoria corrupta que puede causar más problemas.
Otras aplicaciones usan el guardado automático, o una combinación de ambos: depende de las necesidades del programa y del soporte de la plataforma para captar estas señales.
fuente
Un bloqueo del sistema es solo otra rutina que ejecuta el sistema operativo. La razón por la que ocurre un "bloqueo" es porque un programa o biblioteca no se pudo cargar o no se cargó correctamente y tiene la capacidad de causar daños permanentes a los archivos del sistema. Por lo tanto, como medida de seguridad, Windows fuerza un apagado / reinicio y detiene toda escritura en los archivos del sistema antes de que el programa / biblioteca delincuente pueda editar estos archivos.
Antes de apagar / reiniciar, realiza las mismas funciones que un apagado / reinicio normal: es decir, guardar archivos del sistema, etc.
En cuanto a las aplicaciones individuales (Word / Chrome) que guardan su "Progreso", esa es una función interna de la aplicación, que guarda su progreso a intervalos específicos (que generalmente también puede cambiar en la configuración del programa). Si tiene un bloqueo de la aplicación / sistema, después de reiniciar, puede mirar ese archivo y preguntarle si desea restaurar la sesión.
fuente
Es posible que esté hablando sobre el cierre del sistema operativo debido a la pérdida de energía. Esto podría decirse que es una especie de accidente.
La fuente de alimentación informa a la placa base (supongo que a través de un cable de señalización) sobre cualquier interrupción prolongada de su entrada, la corriente de CA de la pared adecuada, mucho antes de que detenga su salida, que es la fuente de corriente de CC adecuada para la placa base. Puede hacer esto porque almacena su electricidad en condensadores grandes. El sistema operativo recibe esta señal en forma de interrupción de hardware.
Durante este largo intervalo, hay suficiente tiempo para que un sistema de archivos de almacenamiento en búfer de escritura transfiera todas las escrituras almacenadas en búfer al medio de almacenamiento físico permanente, así como para realizar otras rutinas de apagado.
Una gran ventaja de un sistema de archivos de búfer de escritura es que al ordenar las escrituras, puede reducir los movimientos del brazo en las unidades de disco duro, haciéndolas menos y menos distantes.
Esto es similar a lo que @oleksii dice en su respuesta, excepto que en un sistema de archivos de almacenamiento intermedio de escritura, las transacciones completadas normalmente no se transfieren inmediatamente, sino que simplemente se almacenan en el búfer. En caso de falla de energía, las transacciones completadas deben transferirse al disco.
fuente
Las aplicaciones pueden captar señales en C y guardar ciertos datos. Una señal que puede obtener accidentalmente es la Excepción aritmética de punto flotante SIGFPE (ANSI). Los errores incluyen división por cero y desbordamiento. Otra señal es SIGINT, que se eleva presionando ctrl + C en la consola o terminal que mata la aplicación.
fuente