A pánico kernel (a veces abreviado como KP [1] ) es una medida de seguridad tomada por un sistema operativo 's kernel al detectar un interna error fatal en la que o bien es incapaz de recuperar de forma segura o continua para ejecutar el sistema tendría un mayor riesgo de gran pérdida de datos. El término es en gran parte específico de Unix y sistemas similares a Unix. Para los sistemas operativos Microsoft Windows , el término equivalente es " Detener error ", lo que da como resultado una pantalla de verificación de errores [2] que presenta el código de verificación de errores sobre un fondo azul en las primeras versiones de Windows (conocido coloquialmente como "Blue Screen of Death "o BSoD), o sobre un fondo verde en la plataforma Xbox One, así como en las versiones preliminares de Windows 10. [3]
Los kernel rutinas que pánicos mango, conocidas como panic()
en AT & T derivada de y BSD código fuente de Unix, generalmente están diseñados para emitir una mensaje de error a la consola , volcar una imagen de la memoria del núcleo en el disco para post-mortem de depuración , y luego esperar ya sea para reiniciar manualmente el sistema o iniciar un reinicio automático . [4] La información proporcionada es de naturaleza altamente técnica y tiene como objetivo ayudar al administrador del sistema o al desarrollador de software a diagnosticar el problema. Los pánicos del kernel también pueden ser causados por errores que se originan fuera del espacio del kernel. Por ejemplo, muchos sistemas operativos Unix entran en pánico si el proceso init , que se ejecuta en el espacio del usuario , finaliza. [5] [6]
Historia
El kernel de Unix mantiene la coherencia interna y la corrección del tiempo de ejecución con aserciones como mecanismo de detección de fallas . La suposición básica es que el hardware y el software deben funcionar correctamente y la falla de una afirmación da como resultado un pánico , es decir, una interrupción voluntaria de toda la actividad del sistema. [7] El pánico del kernel se introdujo en una versión temprana de Unix y demostró una gran diferencia entre las filosofías de diseño de Unix y su predecesor Multics . El desarrollador de Multics, Tom van Vleck, recuerda una discusión sobre este cambio con el desarrollador de Unix Dennis Ritchie :
Le comenté a Dennis que fácilmente la mitad del código que estaba escribiendo en Multics era un código de recuperación de errores. Dijo: "Dejamos todo eso fuera. Si hay un error, tenemos esta rutina llamada pánico, y cuando se llama, la máquina se bloquea y gritas en el pasillo: 'Oye, reiníciala'". [8 ]
La panic()
función original se mantuvo esencialmente sin cambios desde la Quinta Edición UNIX al UNIX 32V basado en VAX y emitió solo un mensaje de error sin otra información, luego dejó caer el sistema en un bucle inactivo sin fin.
Código fuente de panic()
función en V6 UNIX : [9]
/ * * En caso de que la consola esté apagada, * panicstr contiene el argumento de la última * llamada al pánico. * / char * panicstr ;/ * * Se invoca el pánico en los errores fatales * irresolubles . * Se sincroniza, imprime "panic: mesg" y * luego se repite . * / pánico ( s ) char * s ; { panicstr = s ; actualizar (); printf ( "pánico:% s \ n " , s ); para (;;) inactivo (); }
A medida que se mejoró el código base de Unix , la panic()
función también se mejoró para volcar varias formas de información de depuración en la consola.
Causas
Un pánico puede ocurrir como resultado de una falla de hardware o un error de software en el sistema operativo. En muchos casos, el sistema operativo puede seguir funcionando después de que se haya producido un error. Sin embargo, el sistema se encuentra en un estado inestable y en lugar de correr el riesgo de violaciones de seguridad y corrupción de datos, el sistema operativo se detiene para evitar más daños y facilitar el diagnóstico del error y, en casos habituales, reiniciarse. [10]
Después de recompilar una imagen binaria del kernel a partir del código fuente , un pánico del kernel al arrancar el kernel resultante es un problema común si el kernel no se configuró, compiló o instaló correctamente. [11] El hardware adicional o la RAM defectuosa también podrían ser fuentes de errores fatales del kernel durante el inicio, debido a la incompatibilidad con el sistema operativo o la falta de un controlador de dispositivo . [12] Un kernel también puede entrar panic()
si no puede localizar un sistema de archivos raíz . [13] Durante las etapas finales de la inicialización del espacio de usuario del kernel , normalmente se desencadena un pánico si falla la generación de init . También se puede desencadenar un pánico si el proceso de inicio termina, ya que el sistema quedaría inutilizable. [14]
La siguiente es una implementación de la inicialización final del kernel de Linux en kernel_init()
: [15]
static int __ref kernel_init ( void * sin usar ) { ... / * * Intentamos cada uno de estos hasta que uno tiene éxito. * * Se puede usar el shell Bourne en lugar de init si estamos * tratando de recuperar una máquina realmente rota. * / if ( execute_command ) { if ( ! run_init_process ( execute_command )) return 0 ; pr_err ( "Error al ejecutar% s. Intentando valores predeterminados ... \ n " , execute_command ); } if ( ! run_init_process ( "/ sbin / init" ) || ! run_init_process ( "/ etc / init" ) || ! run_init_process ( "/ bin / init" ) || ! run_init_process ( "/ bin / sh" )) return 0 ; panic ( "No se encontró init. Intente pasar la opción init = al kernel." "Consulte la Documentación de Linux / init.txt para obtener orientación." ); }
Especificaciones del sistema operativo
Linux
Los pánicos del kernel aparecen en Linux como en otros sistemas similares a Unix, pero también pueden generar otro tipo de condición de error, conocida como kernel oops . [16] En este caso, el núcleo normalmente continúa funcionando después de matar el infractor proceso . Como un error podría provocar que algunos subsistemas o recursos dejen de estar disponibles, más tarde pueden provocar un pánico completo en el kernel.
En Linux, un pánico del kernel hace que los LED del teclado parpadeen como una indicación visual de una condición crítica. [17]
Mac OS
Cuando ocurre un pánico del kernel en Mac OS X 10.2 a 10.7, la computadora muestra un mensaje multilingüe que informa al usuario que necesita reiniciar el sistema. [18] Antes de la versión 10.2, se mostraba un mensaje de pánico al estilo Unix más tradicional; en 10.8 y posteriores, la computadora se reinicia automáticamente y muestra un mensaje después del reinicio. El formato del mensaje varía de una versión a otra: [19]
- 10.0–10.1: El sistema muestra texto en la pantalla, brinda detalles sobre el error y deja de responder.
- 10.2: Despliega una cortina transparente negra y luego muestra un mensaje sobre un fondo blanco que informa al usuario que debe reiniciar la computadora. El mensaje se muestra en inglés , francés , alemán y japonés .
- 10.3-10.5: El pánico del kernel es casi el mismo que el de la versión 10.2, pero el fondo de la pantalla de error es negro.
- 10.6–10.7-10.8: El texto ha sido revisado y ahora incluye una traducción al español .
- 10.9 y posterior: la computadora deja de responder antes de reiniciarse inmediatamente. Cuando la computadora se reinicia, muestra un mensaje de advertencia durante unos segundos sobre el reinicio de la computadora debido a un pánico del kernel, y luego la computadora se reinicia. El mensaje ahora incluye una traducción al chino .
A veces, cuando hay cinco o más pánico del kernel dentro de los tres minutos del primero, la Mac mostrará una señal de prohibición durante 30 segundos y luego se apagará (esto se conoce como "pánico recurrente del kernel").
En todas las versiones anteriores a la 10.2, el texto se superpone a un símbolo de espera y no es de pantalla completa. La información de depuración se guarda en la NVRAM y se escribe en un archivo de registro al reiniciar. En 10.7 hay una función para reiniciar automáticamente después de un pánico del kernel. En algunos casos, en la versión 10.2 y posteriores, puede aparecer un texto blanco que detalla el error además del símbolo de espera.
Pánico del kernel de Mac OS X 10.0–10.1
Pánico del kernel de Mac OS X 10.2
Pánico del kernel de Mac OS X 10.3–10.5
Pánico del kernel de Mac OS X 10.6 y 10.7
Mensaje que se muestra después de que la computadora se reinicia debido a un pánico del kernel en OS X 10.8 y versiones posteriores
Ver también
- Volcado de memoria
- Pantalla azul de muerte
Referencias
- ^ "KP - Kernel Panic (Linux) | AcronymFinder" . www.acronymfinder.com . Consultado el 6 de enero de 2016 .
- ^ "Comprobaciones de errores (pantallas azules)" . Centro de desarrollo de hardware: Microsoft .
- ^ Hoffman, Chris. "¿Sabías que Windows 10 tiene una pantalla verde de la muerte?" . How-To Geek . Consultado el 4 de junio de 2020 .
- ^ "FreeBSD 11.0 - página de manual para pánico (sección 9 de freebsd) - Comandos de Unix y Linux" . www.unix.com .
- ^ "boot failure-init murió - Foros de Unix Linux - HP-UX" . www.unix.com .
- ^ Randolph J. Herber (1 de septiembre de 1999). "Re: PANIC: init murió" . Grupo de noticias : comp.sys.sgi.admin .
- ^ Daniel P. Siewiorek; Robert S. Swarz (1998). Sistemas informáticos fiables: diseño y evaluación . AK Peters, Ltd. pág. 622. ISBN 978-1-56881-092-8. Consultado el 6 de mayo de 2011 .
- ^ "Unix y Multics" . www.multicians.org .
- ^ Código fuente /usr/sys/ken/prf.c de V6 UNIX
- ^ Steven M. Hancock (22 de noviembre de 2002). Solución de problemas de Tru64 UNIX: diagnóstico y corrección de problemas del sistema Colección HP Technologies SeriesITPro . Prensa digital. págs. 119-126. ISBN 978-1-55558-274-6. Consultado el 3 de mayo de 2011 .
- ^ Michael Jang (2006). Molestias de Linux para geeks . O'Reilly Media, Inc. págs. 267–274. ISBN 978-0-596-00801-7. Consultado el 29 de abril de 2011 .
- ^ David Pogue (17 de diciembre de 2009). Cambiar a Mac: The Missing Manual, Snow Leopard Edition . O'Reilly Media, Inc. pág. 589. ISBN 978-0-596-80425-1. Consultado el 4 de mayo de 2011 .
- ^ Greg Kroah-Hartman (2007). Kernel de Linux en pocas palabras . O'Reilly Media, Inc. pág. 59. ISBN 978-0-596-10079-7. Consultado el 3 de mayo de 2011 .
- ^ Wolfgang Mauerer (26 de septiembre de 2008). Arquitectura profesional del kernel de Linux . John Wiley e hijos. págs. 1238-1239. ISBN 978-0-470-34343-2. Consultado el 3 de mayo de 2011 .
- ^ linux / init / main.c , Referencia cruzada de LXR
- ^ " Controladores de dispositivos Linux , Capítulo 4" (PDF) .
- ^ James Kirkland; David Carmichael; Christopher L. Tinker; Gregory L. Tinker (mayo de 2006). Solución de problemas de Linux para administradores de sistemas y usuarios avanzados . Prentice Hall . pag. 62. ISBN 9780132797399. Consultado el 5 de febrero de 2016 .
- ^ "OS X: Acerca de los pánicos del kernel - Soporte de Apple" . support.apple.com .
- ^ "Una nueva pantalla de la muerte para Mac OS X" . OSXBook.com .