¿Cómo sabe la computadora que la PC no se apagó correctamente?

92

En realidad, esta pregunta me llamó la atención por los cortes de energía en mi casa. Cuando hay un corte de energía, hay una pérdida repentina de energía de la computadora.

¿Cómo sabe la computadora que el apagado no se realizó correctamente?

Rey Helado
fuente

Respuestas:

104

Windows también usa el método Dirty Bit para detectar si la PC se apagó correctamente:

Cuando se apaga normalmente, el bit se apaga. Sin embargo, en caso de corte de energía o apagado incorrecto (forzado), el bit seguirá encendido la próxima vez que se inicie la PC.

Esto significa que Windows puede sugerir medidas correctivas, como arrancar en modo seguro.

Además, una PC con Windows escribirá una entrada en el registro de eventos que detalla cuándo y por qué (si se conoce) se cerró. También escribe un evento cuando se inicia la PC.

Apagado del sistema

Inicio del sistema

Cuando la PC se reinicia, puede verificar el registro de eventos y si no encuentra un "evento de apagado" después del último evento de "inicio", sabe que la PC no se cerró correctamente y puede haber problemas debido a que no se guardó datos, etc.

ChrisF
fuente
2
¿No es más precisa la respuesta de David a continuación? Pensé que NTFS tenía un 'bit sucio' que el FS detecta cuando está montado. Siempre he asumido que el registro de eventos es solo un registro de lo que se encuentra en lugar de la detección y el razonamiento reales detrás de él.
HaydnWVN
3
Pero en una situación de apagado no planificado (obviamente sin UPS), el apagado sería 'inesperado' (mencionado por el registro de eventos). Gran información aquíIf a program initiates an I/O operation that alters the structure of an NTFS volume - that is, changes the directory structure, extends a file, allocates space for a new file, and so on - NTFS treats that operation as an atomic transaction. It guarantees that the transaction is either completed or, if the system fails while executing the transaction, rolled back.
HaydnWVN
3
@HaydnWVN El bit sucio del sistema de archivos se utiliza para identificar un desmontaje anormal, de modo que el sistema operativo sepa que el sistema de archivos puede estar en un estado indeterminado y puede ejecutar un diagnóstico (por ejemplo chkdsk) para identificar posibles problemas del sistema de archivos. Es por eso que a veces aparece el cuadro de diálogo de reparación al conectar unidades USB que no se eliminaron correctamente. Por el contrario, el término "bit sucio" simplemente significa un campo que se establece y se desactiva más tarde cuando se produce la terminación adecuada del tiempo de ejecución del sistema o dispositivo. Una terminación incorrecta deja el conjunto de campos, por lo que se reconoce en la próxima inicialización del dispositivo.
Polinómico
1
@ChrisF Ese requisito se puede desactivar en la política de grupo / local. Y se omitirá si se apaga mediante algo como el panel de control de un host VM. Es mejor confiar en los eventos Kernel-General # 12 (apagado normal) y EventLog # 6002 (el último apagado fue inesperado). Si se tratara de un BSOD, también debería haber un BugCheck # 1001. (Todos los eventos: fuente #id.)
Richard
1
Primero, ¿cómo se mantiene el estado de ese bit en la memoria volátil después de un ciclo de energía? ¿Qué pasa con el arranque dual? La cita de Wikipedia se lee como una conjetura, aunque no he leído el libro Conceptos del sistema operativo al que hace referencia. En segundo lugar, la idea de que Windows lea el registro de eventos para determinar si se produjo un apagado limpio es obviamente incorrecta. La respuesta que apunta a bootstat.dat para Windows es mucho más probable que sea correcta que cualquiera de estas suposiciones, en parte porque tiene más sentido, pero principalmente por su fuente citada.
cáñamo
121

Para PC no basadas en Windows, la detección generalmente se realiza por sistema de archivos. Cuando un sistema de archivos se monta en modo lectura / escritura, se escribe una entrada en el sistema de archivos que lo marca sucio. Cuando se desmonta el sistema de archivos, se escribe una entrada que lo marca limpio. Al inicio, el sistema operativo comprueba si sus sistemas de archivos principales están marcados como sucios y, de ser así, sabe que no hubo un apagado limpio, al menos de esos sistemas de archivos.

David Schwartz
fuente
29
+1 porque la pregunta no es sobre un sistema operativo específico.
Trevor Boyd Smith
42

En Windows, según los autores de Windows Internals, 5a ed., Es el archivo bootstat.dat (ubicado de manera predeterminada en el directorio \ boot de la partición del sistema):

Windows usa un archivo de estado de arranque ... para registrar el hecho de que ha progresado a través de varias etapas del ciclo de vida del sistema, incluido el arranque y el apagado. Esto permite que el Administrador de arranque, el cargador de Windows y la herramienta de Reparación de inicio detecten un apagado anormal o una falla al apagarlo limpiamente y ofrezca al usuario opciones de recuperación y arranque de diagnóstico ...

 

kreemoweet
fuente
3
Fuente de cotización?
Paul DelRe
23
"Windows Internals" de Mark Russinovich y David Solomon con Alex Ionescu, página 1010.
artm
Para contrastar esto con la respuesta de ChrisF, el "bit sucio" que mantiene cada sistema de archivos es solo para el estado de ese sistema de archivos; No es de todo el sistema. Tenga en cuenta que puede "desconectar de manera segura" un disco duro extraíble, lo que despeja el bit sucio de ese sistema de archivos, y luego podría ocurrir un apagado inesperado después de eso.
Jamie Hanrahan
0

En algunas computadoras, se puede establecer un método independiente del sistema operativo en el BIOS de hardware. Depende del proveedor de la computadora y el proveedor del BIOS.

Los mojors incluyen American Megatrends Inc. (AMI), Award y Phoenix Technologies. Mire estos fabricantes para detalles.

Sushi
fuente
2
En lugar de simplemente agitar la mano y decir "la información está ahí afuera", ¿qué tal si realmente enlazamos con algunas referencias relevantes?
G-Man