Tengo una idea aproximada de cómo funcionan el espacio de usuario y el sistema init (ya sea el clásico init sysV / upstart / systemd) en el apagado del sistema. (Esencialmente, hay una orden de sucesión de "¡Alto!", "¡Por favor, deténgase ahora realmente", "Proceso, necesito matarte para que pares" y esperar ... las cosas continúan).
De todos modos, no soy muy consciente de cómo funciona el apagado del sistema en el núcleo (donde seguramente también hay muchas cosas que hacer).
Traté de buscar en la documentación del kernel https://www.kernel.org/doc/htmldocs/ e incluso utilicé la herramienta de búsqueda de amigos de la NSA para ayudarme a descubrir cómo funciona.
También busqué en SE U + L y no encontré nada (¿lo pasé por alto?)
De todos modos, la pregunta, aunque potencialmente un poco desafiante, merecería una respuesta en esta red de preguntas y respuestas, ya que supongo que más personas están interesadas en obtener un boceto de lo que sucede en el kernel de Linux en el cierre.
Potencialmente, también hay cambios para vincular a algunas explicaciones más detalladas.
¿Una respuesta podría incluir qué llamadas al sistema y qué señales internas se utilizan?
https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c parece ser el archivo x86 usado relacionado con el reinicio (ya está cerca del cierre, ¿eh?)
tal vez el fragmento que se encuentra aquí http://lxr.free-electrons.com/source/kernel/reboot.c#L176 se puede usar para dar una explicación
176 vacío kernel_power_off (vacío) 177 { 178 kernel_shutdown_prepare (SYSTEM_POWER_OFF); 179 if (pm_power_off_prepare) 180 pm_power_off_prepare (); 181 migrate_to_reboot_cpu (); 182 syscore_shutdown (); 183 pr_emerg ("Apagar \ n"); 184 kmsg_dump (KMSG_DUMP_POWEROFF); 185 machine_power_off (); 186} 187 EXPORT_SYMBOL_GPL (kernel_power_off);
shutdown(8)
es decir, la obsoleta, -n
que creo que en la antigua documentación de Unix solía leer " apaguemos el sistema nosotros mismos: ¡la unidad central está ENCENDIDO! ", Efectivamente un desordenado interruptor de apagado del sistema que podría / podría dejar fragmentos esparcidos por el piso (o al menos los sistemas de archivos en un estado corrupto): uno imagina que esto se usaría para un sistema de tipo de marco principal donde alguien acaba de atrapar su mano en un ventilador de enfriamiento. 🕱