¿Cuál es la diferencia entre un kernel oops y un kernel panic?

51

Sé lo que es un kernel panic, pero también he visto el término "kernel oops". Siempre pensé que eran lo mismo, pero tal vez no. Entonces:

¿Qué es un kernel oops y cómo es diferente de un kernel panic?

Strugee
fuente

Respuestas:

45

Un " oops " es un problema del kernel de Linux lo suficientemente malo como para afectar la confiabilidad del sistema.

Algunos "oops" son lo suficientemente malos como para que el kernel decida dejar de ejecutarse inmediatamente, para que no haya pérdida de datos u otro daño. Estos se llaman kerics panics .

El último término es primordial, y se remonta a las versiones más antiguas de los antepasados ​​Unix de Linux, que también imprimen un mensaje de "pánico" en la consola cuando suceden. Se llama a la función original del núcleo AT&T Unix que maneja tales condiciones panic(). Puede rastrearlo a través de las versiones de código fuente público de AT&T Unix hasta sus primeras versiones:

  • La versión de OpenSolarispanic() fue lanzada por Sun en 2005 . Es bastante elaborado, y sus comentarios en el encabezado explican mucho sobre lo que sucede en una situación de pánico.

  • La implementación de Unix V4panic() se lanzó en 1973. Básicamente solo imprime el estado central del núcleo en la consola y detiene el procesador.

  • Esa función es sustancialmente sin cambios en Unix V3 acuerdo con Amit Singh, que famoso diseccionó una versión anterior de Mac OS X y lo explicó. Ese primer enlace lo lleva a un artículo encantador que explica el enfoque de macOS para la implementación de panic(), que comienza con una discusión histórica relevante.

  • El proyecto " unix-jun72 " para resucitar Unix V1 de las impresiones escaneadas del código fuente muestra una versión de ensamblaje PDP-11 muy temprana de esta función, escrita en algún momento antes de junio de 1972, antes de que Unix se reescribiera completamente en C. En este punto, su implementación está reducido a una rutina de 6 instrucciones que hace poco más que reiniciar el PDP-11.

Warren Young
fuente
acabo de ver tus ediciones (presumiblemente, ¿por eso obtuve más votos a favor sobre la pregunta?) - realmente increíble, gracias por agregar a esto :)
strugee
14

Un error es un error específico que encuentra el núcleo. Un Oops contiene la siguiente información:

  • Breve descripción
  • Uy #
  • En qué CPU sucedió y el código que la CPU estaba ejecutando
  • Registrar contenidos

Oops es una forma de depurar el código del kernel, y hay utilidades para ayudar con eso. Un kernel panic significa que el sistema no puede recuperarse y debe reiniciarse. Sin embargo, con un Oops, el sistema generalmente puede continuar. Puede configurar klogd y syslogd para registrar mensajes de ups en archivos, en lugar de cerrarlos.

tdk2fe
fuente