Panico kernel

Kernel panic (del  inglés  -  "alarma, falla en el kernel", literalmente kernel panic ) - un mensaje sobre un error crítico del kernel del sistema operativo , después del cual el sistema operativo no puede continuar trabajando [1] .

El término se suele utilizar en un entorno de sistema operativo como UNIX . Su nombre está relacionado con el texto de error de la forma " Kernel panic: …" y el nombre de la función del núcleo del sistema operativo UNIXpanic() original [2] .

Kernel panic es posible en Android , que se basa en el kernel de Linux . Dado que Mac OS X e iOS se basan en Darwin , que es una clase de sistemas UNIX, también están sujetos al pánico del kernel. [3] .

Historia

La historia de Kernel panic está estrechamente relacionada con la del sistema operativo UNIX , que fue desarrollado a finales de la década de 1960 por empleados de Bell Labs , sobre todo Ken Thompson , Dennis Ritchie y Douglas McIlroy .

El mensaje de pánico del kernel se introdujo en las primeras versiones de UNIX y representó una diferencia importante en la filosofía del sistema operativo con respecto al principal competidor y predecesor de UNIX, Multics . Multics se diseñó para ejecutarse en el mainframe GE-645 de 36 bits , mientras que UNIX se diseñó para ejecutarse en la minicomputadora PDP-7 de 18 bits mucho menos poderosa y, por esta razón, había menos recursos disponibles para el sistema operativo, lo que llevó a la necesidad de conservar recursos, incluido el manejo de errores. El desarrollador de Multics, Tom van Vleck, describe este cambio en una conversación con el desarrollador de UNIX, Dennis Ritchie [4] :

Le dije a Dennis que aproximadamente la mitad del código que escribí para Multics era código de manejo de errores. Él respondió: “Lo dejamos todo. Si ocurre un error, tenemos un procedimiento llamado pánico , y si se llama, la computadora se congela y gritas: "¡Oye, reinícialo!".

Texto original  (inglés)[ mostrarocultar] Le comenté a Dennis que fácilmente la mitad del código que estaba escribiendo en Multics era código de recuperación de errores. Él dijo: “Dejamos todas esas cosas fuera. Si hay un error, tenemos esta rutina llamada panic, y cuando se llama, la máquina falla y usted grita en el pasillo: 'Oye, reinícialo'.

La función original panic()no cambió fundamentalmente de UNIX V5 a sistemas de 32 V basados ​​en VAX , y solo imprimía un mensaje de error sin información adicional, después de lo cual el sistema entraba en un ciclo vacío sin fin . Posteriormente, durante el desarrollo de UNIX, la función panic()se finalizó y comenzó a mostrar una variedad de información necesaria para la depuración en la terminal .

Este principio de manejo de errores críticos fue adoptado por la mayoría de los sistemas operativos posteriores, como Mac OS [3] o Microsoft Windows [5] .

Causas del Kernel Panic

Una de las causas más comunes de kernel panic es la incapacidad de encontrar y montar el sistema de archivos raíz. Suele ser un error de configuración que se puede solucionar reiniciando manualmente el kernel [6] .

En Linux, la aparición de un kernel panic a menudo está precedida por una condición llamada oops . En algunos casos, los errores pueden llevar al mismo estado de mal estado del sistema que un kernel panic [1] .

En la mayoría de los demás casos, la causa de Kernel panic es un error crítico de hardware ( falla de RAM , error de procesador , placa base, tarjeta gráfica u otro dispositivo crítico) o un error en el propio kernel del sistema operativo , por ejemplo, un intento de acceder a un dirección errónea o prohibida en la memoria. Otras causas de Kernel panic pueden ser errores en los controladores de dispositivos periféricos o errores en el sistema de archivos [3] [7] . Durante la etapa final de la inicialización del espacio de usuario , generalmente ocurre un kernel panic cuando init falla al ejecutarse porque, a pesar de que el kernel se ejecuta y se ejecuta, el sistema en sí permanece inutilizable [8] . El pánico del kernel también puede ser causado por programas de aplicación si no funcionan correctamente con el kernel. Por ejemplo, un error en Google Chrome provocó pánico en el Kernel en Mac OS X [9] .

Código fuente de Panic()

Código fuente UNIX V6 [10] panic() :

char * panicstr ; /* * Se llama pánico en errores irresolubles * fatales. * 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 (); }

Manejo de Kernel Panic

En el caso normal, cuando ocurre un Kernel panic, el sistema operativo deja de funcionar con mensajes de error en la pantalla, luego de lo cual el sistema espera a que la computadora se apague o reinicie . Sin embargo, tal procesamiento de este evento es inaceptable cuando una computadora simple es altamente indeseable o una persona no está presente (por ejemplo, en servidores remotos o fuera del horario laboral) [11] .

En sistemas operativos modernos como GNU/Linux , FreeBSD o Solaris , es posible cambiar el comportamiento predeterminado de la función panic() y reiniciar la computadora automáticamente. En GNU/Linux, esta configuración se realiza mediante procfs [11] :

echo 5 > /proc/sys/kernel/panic

Para que los cambios surtan efecto en GNU/Linux después de reiniciar, debe agregar una línea al archivo /etc/sysctl.d/99-sysctl.conf:

núcleo.panic = 5

El valor del parámetro kernel.panic es la cantidad de segundos después de los cuales ocurrirá un reinicio. Establecer este parámetro en un valor negativo o igual a 0 no reiniciará automáticamente [11] .

También en los sistemas BSD hay una opción especial en el kernel. Cita del archivo /usr/src/sys/conf/NOTES[12] :

# Establezca la cantidad de tiempo (en segundos) que el sistema esperará antes de # reiniciarse automáticamente cuando ocurra un pánico del kernel. Si se establece en (-1), # el sistema esperará indefinidamente hasta que se presione una tecla en la # consola. opciones PANIC_REBOOT_WAIT_TIME = 16

En Solaris , el reinicio automático después de un Kernel panic es un comportamiento estándar del sistema [13] .

Reiniciar después de un Kernel panic también tiene una desventaja muy seria, especialmente si el cambio no desaparece después del primer reinicio . En el caso de que un reinicio no solucione el error que causa el Kernel panic, el sistema se detendrá y reiniciará una y otra vez, lo que puede provocar errores de hardware o pérdida de datos [6] . En el caso de que esta situación surgiera después de compilar un nuevo kernel, la solución al problema puede ser cargar una copia guardada del antiguo kernel en funcionamiento. Como regla general, para esto es suficiente especificar manualmente la ruta a una copia de trabajo del kernel durante el arranque [14] .

El archivo System.map [15] puede ser útil para investigar la causa de un pánico en el kernel de Linux .

Kernel panic en varios sistemas operativos

Inicialmente, el mensaje de pánico del Kernel se limitaba a un breve texto sobre la necesidad de reiniciar el sistema. En los sistemas modernos, generalmente se proporciona más información adicional.

  • GNU/Linux y la mayoría de los demás sistemas operativos compatibles con UNIX generan un registro que describe el error y muestran un mensaje de error en la pantalla que contiene la información necesaria para depurar y encontrar la causa del error. Este mecanismo se llama Linux oops . Las distribuciones modernas de Linux usan el servidor gráfico X Window , y Kernel panic no provoca un cambio a la consola física que imprime mensajes de diagnóstico. Puede reconocer Kernel panic haciendo parpadear los LED de bloqueo de mayúsculas y bloqueo de desplazamiento en el teclado [16] .
  • En las versiones originales de Mac OS X (desde la 10.0 hasta la 10.0.1.5), por analogía con los sistemas operativos basados ​​en el kernel de Linux, aparecía en la pantalla información sobre un error ocurrido, tras lo cual el sistema se detenía. A partir de Mac OS X 10.2, este mensaje se ha simplificado y solo le indica que reinicie su computadora en cuatro idiomas (inglés, alemán, francés y japonés), independientemente de la versión de idioma del sistema operativo [3] [17] . Sin embargo, OS X permite [17] reemplazar la imagen por cualquier otra, lo que permite a los desarrolladores mostrar mensajes de error modificados en diversas situaciones [17] . Gracias a esta función, en OS X incluso es posible simular la pantalla azul de la muerte del sistema operativo Windows reemplazando la imagen estándar con una captura de pantalla de la imagen de Windows correspondiente [17] .

En sistemas operativos que no son UNIX

Si bien el término Kernel panic se usa principalmente para los sistemas operativos compatibles con UNIX , en otros sistemas operativos , el manejo de errores críticos al detener el sistema también se ha arraigado y ha recibido los siguientes nombres:

  • En la mayoría de las versiones de Microsoft Windows , el sistema se congela con una pantalla azul con una breve descripción del error [5] , que se denomina Pantalla azul de la muerte . En el sistema operativo Windows XP , cuando ocurre un error, la computadora se reinicia automáticamente. Este comportamiento del sistema se controla a través del Panel de control de Windows . Si ocurre un error al cargar el sistema operativo, puede cambiar el comportamiento del sistema a través del menú del botón F8 [5] .
  • En computadoras Macintosh más antiguas : Sad Mac (error de hardware al iniciar el sistema) [18] , Bomb (para errores de software o sistema operativo) [19] .
  • En las computadoras Amiga con AmigaOS antes de la 2.04, este mecanismo se llamaba Guru Meditation y funcionaba de manera similar a Kernel panic en Unix [20] . En versiones posteriores, el texto "Meditación del gurú" se eliminó del mensaje de error [20] .

Véase también

Notas

  1. 1 2 Kirkland, Tinker, 2006 , pág. 51.
  2. Información de Panic() en UNIX.com . Página de manual de BSD en los foros de UNIX y Linux (11 de agosto de 1995). Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  3. 1 2 3 4 Causas de Kernel panic en Mac OS X. macmaps.com. Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  4. Unix y Multics . www.multicians.org (21/03/93). Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  5. 1 2 3 Información sobre el comportamiento de Windows en situaciones anormales . Microsoft Corp. Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  6. 1 2 Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum, 2008 , p. 170.
  7. Información sobre las causas del Kernel panic en el sitio web de Apple . Apple Inc. Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  8. Wolfgang Mauerer. Arquitectura Kernel Profesional de Linux  (neopr.) . - John Wiley and Sons , 2008. - S. 1238-1239. — ISBN 978-0-470-34343-2 .
  9. Google se sincera: Sí, el pánico del kernel es culpa de Chrome . Betanews (7 de enero de 2012). Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  10. Código fuente prf.c UNIX V6 . árbol Unix. Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  11. 1 2 3 Kopper, 2005 , pág. 178.
  12. Página de manual de OpenBSD SYSCTL.CONF . OpenBSD. Consultado el 24 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  13. Ingenieros del sistema Solaris, 2009 , p. 9.3.4.2.
  14. Michael Urban, Brian Tiemann, 2002 , pág. 172.
  15. Michael Schwarz, 2002 , pág. 21
  16. Kirkland, Tinker, 2006 , pág. 52.
  17. 1 2 3 4 Una nueva pantalla de muerte para Mac OS X. Amit Singh. Consultado el 30 de julio de 2012. Archivado desde el original el 6 de agosto de 2012.
  18. Ted Landau, 2000 , pág. 133.
  19. Ted Landau, 2000 , pág. 83.
  20. 1 2 Eric S. Raymond, 1996 , pág. 230.

Literatura

  • Karl Kopper. Linux Enterprise Cluster: cree un clúster de alta disponibilidad. - No Starch Press, 2005. - P. 430. - ISBN 1593270364 .
  • Michael Urban, Brian Tiemann. Sams Enséñese usted mismo FreeBSD en 24 horas. - Sams Publishing, 2002. - Pág. 456. - ISBN 0672324245 .
  • James Kirkland, Christopher L.Tinker. Solución de problemas de Linux para administradores de sistemas y usuarios avanzados. - Prentice Hall Professional, 2006. - Pág. 571. - ISBN 0-13-185515-8 .
  • Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum. Construcción de sistemas Linux integrados. - O'Reilly Media, 2008. - Pág. 439. - ISBN 0596529686 .
  • Ingenieros del Sistema Solaris. Aspectos básicos de la administración del sistema Solaris 10. - Pearson Education, 2009. - Pág. 456. - ISBN 013700009X .
  • Michael Schwarz. Multitool Linux: usos prácticos del software de código abierto. - Addison-Wesley Professional, 2002. - P. 532. - ISBN 0201734206 .
  • Ted Landau. Tristes Mac, bombas y otros desastres: y qué hacer al respecto . - Peachpit Press, 2000. - S.  955 . — ISBN 020169963X .
  • Eric S. Raymond. El diccionario del nuevo hacker. - MIT Press, 1996. - P. 547. - ISBN 0262680920 .

Enlaces