¿Por qué los sistemas operativos necesitan ejecutar tareas de larga duración antes de apagarse?

Porque cuando la computadora se está ejecutando, ciertos programas, servicios y procesos se están ejecutando en segundo plano, el sistema tiene que completarlos y apagarlos todos antes de que la computadora se apague, esto es normal, cuando enciende su computadora se reinicia, cargar programas, servicios y procesos en segundo plano, forzar a una computadora a apagarse rápidamente se conoce como un apagado anormal, lo que podría causar problemas, por lo general, recibirá un mensaje al respecto, en lo que respecta a la configuración de Windows, puede ir a herramientas: configuración del sistema para ver qué servicios se comprueban para ejecutar, aquí puede seleccionar qué debe ejecutarse, en el administrador de tareas puede ver qué programas, servicios y procesos se están ejecutando y finalizarlos para acelerar el apagado, tenga cuidado para investigar cuáles puede deshabilitar o finalizar, elegir los incorrectos podría causar un bloqueo, otra opción es un software de terceros, ciertos programas están diseñados para determinar lo que necesita el sistema y solo apagarán lo que sea n Si no es necesario, algunos deshabilitarán los servicios y procesos innecesarios, esto también acelerará el apagado, la mayoría de los programas se pueden cerrar en el administrador de tareas sin muchos incidentes, el mantenimiento también es importante, un disco duro cargado con archivos basura tarda más en leerse, limpiarlo y la desfragmentación acelerará la lectura que afecta el apagado, estas cosas ayudarán, pero comprenda que la computadora tiene que apagarse normalmente, por lo que es posible que tenga que ser paciente.

Todo depende de lo que estés haciendo.

El cierre de las bases de datos puede llevar mucho tiempo, ya que algunos subprocesos pueden estar en áreas críticas … por lo tanto, deben finalizar. Luego está la descarga de datos modificados que puede llevar bastante tiempo.

La mayoría de los sistemas indicarán a todos los procesos que se ha iniciado un apagado. De repente, cada uno exige que se guarden las transacciones / datos activos, y eso puede comenzar a destruir el disco y lleva un tiempo terminarlo. El apagado enviará (después de un “retraso de tiempo adecuado”) un cierre forzado a todos los procesos restantes. Ahora el segador limpia las asignaciones de memoria, los sistemas de archivos comienzan a eliminar los bloques asignados que no se han utilizado, eliminando los archivos reutilizables que están pendientes de eliminación … Todo lo cual toma un tiempo adicional.

La actividad restante es desmontar todos los sistemas de archivos activos, lo que requiere vaciar los bloques modificados en el disco, lo que puede llevar un tiempo …

Entonces se produce el alto.

Algunos sistemas operativos intentan simularlo utilizando una forma de hibernación en lugar de un apagado. Pero incluso esto puede requerir que de repente se escriban muchos datos en el disco (esencialmente un volcado de imagen de memoria que se puede volver a cargar), y que puede llevar algo de tiempo (tamaño de memoria) y algún lugar para escribirlo (con frecuencia una partición / archivo de intercambio).

Algunos intentarán evitar eso simplemente deteniéndose, con un reinicio después de la instrucción de detención y reiniciando los dispositivos. Pero si tiene una falla de energía en el medio, puede obtener un sistema de archivos dañado, archivos de datos corruptos … incluso con el registro en el diario, los datos que no se han comprometido con el diario se pierden.

Entonces, si no le importa tener archivos corruptos, datos perdidos y tener que reconstruir sistemas de archivos y / o archivos de datos ocasionalmente …

Siga adelante y apáguelo de inmediato.

Lo principal que hacen las computadoras antes de apagar es vaciar todos los buffers. Es decir, asegúrese de que todo lo que se suponía que debía enviarse a un dispositivo, como un disco duro, se envíe y finalice antes de que la computadora se apague.

En una máquina con Windows, puede haber muchas más tareas que realiza Windows antes de apagarse, incluidas las actualizaciones de Windows, sin contar todos los demás programas en ejecución que deben cerrarse.

Me di cuenta de que Java tarda mucho tiempo en apagarse, probablemente debido a su pesadilla de gestión de memoria.

Mientras más complicados se vuelven los sistemas operativos hoy en día, más se está sucediendo detrás de escena de lo que no tenemos idea, y más tiempo toma estos procesos para cerrarse.

No estoy seguro de dónde está obteniendo que es muy malo esperar hasta que una aplicación reciba una señal SIGTERM (no hay una señal real de que todo el equipo se está apagando, solo un término seguido de una interrupción en cada proceso) para Datos persistentes. Un usuario que trabaja en un archivo en un procesador de textos puede optar por no guardar sus cambios hasta que lleguen a cierto punto. ¿Qué sucede si luego aparecen una ventana emergente pidiéndoles que se reinicien porque se instalaron algunas actualizaciones y presionaron OK distraídamente? La mayoría de las personas agradecerían la oportunidad de guardar su trabajo en ese momento, algo que pueden hacer porque su aplicación tiene una cantidad limitada de tiempo para manejar el SIGTERM en sí mismo, antes de que el SIGKILL llegue y lo termine de inmediato. Esto es una verdadera conveniencia para los usuarios, no estoy seguro de por qué algún principio nebuloso de desarrollo de software debe tener prioridad sobre la funcionalidad deseada.

Hay otro punto que podría hacerse: un apagado recuperable y un apagado limpio son dos paradas diferentes.

Incluso el hardware no puede estar 100% preparado para una pérdida repentina de energía: cualquier disco (sin importar si es un HDD o SSD o algo externo) no podría escribir todos los datos en tales circunstancias. Por lo tanto, los sistemas de archivos modernos se hacen transaccionales: si alguna escritura en una transacción no se completa, entonces no se aplica (revierte) toda la transacción. Esto acelera el tiempo de recuperación, pero no lo elimina por completo. Además, dado que la transacción puede revertirse, puede perder algunos datos.

Para asegurarse de que no se pierdan datos, debe realizar una limpieza completa al apagar.

Y no olvide el servicio de limpieza: algunas tareas se pueden realizar de forma segura solo durante el apagado (por ejemplo, cambiar algunos controladores). Pero eso es mucho más específico.