En el cálculo de , un volcado de núcleo , [a] de volcado de memoria , de volcado , volcado del sistema , o ABEND volcado [1] consiste en el estado grabado del trabajo de memoria de un programa de ordenador en un momento específico, generalmente cuando el programa ha estrellado o de lo contrario terminó de forma anormal. [2] En la práctica, otras partes clave del estado del programa generalmente se descargan al mismo tiempo, incluidos los registros del procesador , que pueden incluir el contador del programa y el puntero de la pila., información de gestión de memoria y otros indicadores e información del procesador y del sistema operativo. Un volcado de instantáneas (o volcado instantáneo ) es un volcado de memoria solicitado por el operador de la computadora o por el programa en ejecución, después del cual el programa puede continuar. Los volcados de memoria se utilizan a menudo para ayudar a diagnosticar y depurar errores en programas informáticos.
En muchos sistemas operativos, una excepción fatal en un programa desencadena automáticamente un volcado de memoria. Por extensión, la frase "volcar el núcleo" ha llegado a significar en muchos casos cualquier error fatal, independientemente de si existe un registro de la memoria del programa. El término "volcado de memoria", "volcado de memoria" o simplemente "volcado" también se ha convertido en jerga para indicar cualquier salida de una gran cantidad de datos sin procesar para un examen más detallado u otros fines. [3] [4]
Fondo
El nombre proviene de la memoria de núcleo magnético , [5] la forma principal de memoria de acceso aleatorio desde la década de 1950 hasta la de 1970. El nombre se mantuvo mucho después de que la tecnología de núcleo magnético se volviera obsoleta.
Los primeros volcados de memoria eran impresiones en papel [6] del contenido de la memoria, normalmente dispuestas en columnas de números octales o hexadecimales (un " volcado hexadecimal "), a veces acompañadas de sus interpretaciones como instrucciones en lenguaje de máquina , cadenas de texto o decimales o flotantes. números de punto ( cf. desensamblador ).
A medida que aumentaba el tamaño de la memoria y se desarrollaban utilidades de análisis post-mortem, los volcados se escribían en medios magnéticos como cintas o discos.
En lugar de solo mostrar el contenido de la memoria aplicable, los sistemas operativos modernos generalmente generan un archivo que contiene una imagen de la memoria que pertenece al proceso bloqueado, o las imágenes de la memoria de partes del espacio de direcciones relacionadas con ese proceso, junto con otra información como como los valores de los registros del procesador, el contador del programa, los indicadores del sistema y otra información útil para determinar la causa raíz del bloqueo. Estos archivos pueden verse como texto, imprimirse o analizarse con herramientas especializadas como elfdump en Unix y sistemas similares a Unix, objdump y kdump en Linux , IPCS (Interactive Problem Control System) en IBM System z , [7] WinDbg en Microsoft Windows, Valgrind u otros depuradores.
En algunos sistemas operativos [b], una aplicación o un operador pueden solicitar una instantánea de los bloques de almacenamiento seleccionados, en lugar de todo el almacenamiento utilizado por la aplicación o el sistema operativo.
Usos
Los volcados de núcleo pueden servir como ayudas de depuración útiles en varias situaciones. En los primeros sistemas de procesamiento por lotes o independientes , los volcados de memoria permitían al usuario depurar un programa sin monopolizar la (muy cara) instalación informática para la depuración; una impresión también podría ser más conveniente que depurar usando interruptores y luces del panel frontal .
En equipos compartidos, ya sean sistemas de tiempo compartido, procesamiento por lotes o servidores, los volcados de núcleo permiten la depuración fuera de línea del sistema operativo , de modo que el sistema pueda volver a funcionar de inmediato.
Los volcados de núcleo permiten al usuario guardar un bloqueo para un análisis posterior o externo, o para compararlo con otros bloqueos. En el caso de las computadoras integradas , puede que no sea práctico admitir la depuración en la propia computadora, por lo que el análisis de un volcado puede tener lugar en una computadora diferente. Algunos sistemas operativos, como las primeras versiones de Unix , no admitían adjuntar depuradores a procesos en ejecución, por lo que era necesario realizar volcados de memoria para ejecutar un depurador en el contenido de la memoria de un proceso.
Los volcados de núcleo se pueden usar para capturar datos liberados durante la asignación de memoria dinámica y, por lo tanto, se pueden usar para recuperar información de un programa que ya no se está ejecutando. En ausencia de un depurador interactivo, un programador asiduo puede utilizar el volcado de memoria para determinar el error a partir de un examen directo.
Los volcados instantáneos son a veces una forma conveniente para que las aplicaciones registren resultados de depuración rápidos y sucios.
Análisis
Un volcado de núcleo generalmente representa el contenido completo de las regiones volcadas del espacio de direcciones del proceso volcado. Dependiendo del sistema operativo, el volcado puede contener pocas o ninguna estructura de datos para ayudar a interpretar las regiones de memoria. En estos sistemas, la interpretación exitosa requiere que el programa o el usuario que intenta interpretar el volcado comprenda la estructura del uso de memoria del programa.
Un depurador puede usar una tabla de símbolos , si existe, para ayudar al programador a interpretar los volcados, identificando variables simbólicamente y mostrando el código fuente; si la tabla de símbolos no está disponible, es posible una menor interpretación del volcado, pero aún puede haber suficiente para determinar la causa del problema. También existen herramientas de propósito especial llamadas analizadores de volcados para analizar volcados. Una herramienta popular, disponible en muchos sistemas operativos, es objdump de GNU binutils .
En los sistemas operativos modernos tipo Unix , los administradores y programadores pueden leer archivos de volcado de núcleo utilizando la biblioteca de descriptores de archivos binarios GNU Binutils (BFD) y el depurador GNU (gdb) y objdump que usan esta biblioteca. Esta biblioteca proporcionará los datos sin procesar para una dirección determinada en una región de memoria desde un volcado de memoria; no sabe nada sobre variables o estructuras de datos en esa región de memoria, por lo que la aplicación que usa la biblioteca para leer el volcado de memoria tendrá que determinar las direcciones de las variables y determinar el diseño de las estructuras de datos en sí, por ejemplo, utilizando la tabla de símbolos para el programa sometido a depuración.
Los analistas de volcados por caída de sistemas Linux pueden usar kdump o el volcado por caída del kernel de Linux (LKCD). [8]
Los volcados de núcleo pueden guardar el contexto (estado) de un proceso en un estado determinado para volver a él más tarde. Los sistemas pueden tener una alta disponibilidad mediante la transferencia de núcleos entre procesadores, a veces a través de los propios archivos de volcado de núcleos.
El núcleo también se puede descargar en un host remoto a través de una red (lo cual es un riesgo de seguridad). [9]
Archivos de volcado de núcleo
Formato
En los sistemas operativos más antiguos y simples, cada proceso tenía un espacio de direcciones contiguo, por lo que un archivo de volcado a veces era simplemente un archivo con la secuencia de bytes, dígitos, [c] caracteres [c] o palabras. En otras máquinas antiguas, un archivo de volcado contenía registros discretos, cada uno con una dirección de almacenamiento y el contenido asociado. En las primeras máquinas, el volcado a menudo se escribía mediante un programa de volcado independiente en lugar de la aplicación o el sistema operativo.
En IBM System / 360 , los sistemas operativos estándar escribieron volcados ABEND y SNAP formateados, con las direcciones, registros, contenido de almacenamiento, etc., todos convertidos a formularios imprimibles. Las versiones posteriores agregaron la capacidad de escribir volcados [d] sin formato , llamados en ese momento volcados de imágenes del núcleo.
En los sistemas operativos modernos, el espacio de direcciones de un proceso puede tener lagunas y compartir páginas con otros procesos o archivos, por lo que se utilizan representaciones más elaboradas; también pueden incluir otra información sobre el estado del programa en el momento del volcado.
En sistemas similares a Unix, los volcados de núcleo generalmente usan el formato de imagen ejecutable estándar :
- a.out en versiones anteriores de Unix ,
- ELF en sistemas modernos Linux , System V , Solaris y BSD ,
- Mach-O en macOS , etc.
Nombrar
OS / 360 y sucesores
- En OS / 360 y sus sucesores , un trabajo puede asignar nombres de conjuntos de datos arbitrarios (DSN) a los ddnames
SYSABEND
ySYSUDUMP
para un volcado ABEND formateado y a ddnames arbitrarios para volcados SNAP, o definir esos ddnames como SYSOUT. [mi] - La función Damage Assessment and Repair (DAR) agregó un volcado automático sin formato [g] al conjunto de datos
SYS1.DUMP
[h] en el momento de la falla, así como un volcado de consola solicitado por el operador. - El volcado de transacciones más reciente es muy similar a las formas más antiguas de volcados.
Tipo Unix
- Desde Solaris 8, la utilidad del sistema
coreadm
permite configurar el nombre y la ubicación de los archivos principales. - Los volcados de procesos de usuario se crean tradicionalmente como archivos
core
. En Linux (desde las versiones 2.4.21 y 2.6 de la línea principal del kernel de Linux ), se puede especificar un nombre diferente a través de procfs usando el/proc/sys/kernel/core_pattern
archivo de configuración; el nombre especificado también puede ser una plantilla que contiene etiquetas sustituidas por, por ejemplo, el nombre del archivo ejecutable, el ID del proceso o el motivo del volcado. [10] - Los volcados de todo el sistema en sistemas modernos similares a Unix a menudo aparecen como
vmcore
ovmcore.incomplete
.
Otros
- Los sistemas como Microsoft Windows , que utilizan extensiones de nombre de archivo , pueden utilizar la extensión
.dmp
; por ejemplo, los volcados de memoria pueden tener el nombrememory.dmp
o\Minidump\Mini051509-01.dmp
.
Volcados de memoria de Windows
Microsoft Windows admite dos formatos de volcado de memoria, que se describen a continuación.
Volcados en modo kernel
Hay cinco tipos de volcados en modo kernel: [11]
- Volcado de memoria completo: contiene la memoria física completa para el sistema de destino.
- Volcado de memoria del kernel: contiene toda la memoria en uso por el kernel en el momento del bloqueo.
- Volcado de memoria pequeño: contiene información diversa, como el código de detención, los parámetros, la lista de controladores de dispositivo cargados, etc.
- Volcado de memoria automático (Windows 8 y posterior): igual que el volcado de memoria del kernel, pero si el archivo de paginación está administrado por el sistema y es demasiado pequeño para capturar el volcado de memoria del kernel, aumentará automáticamente el archivo de paginación al menos al tamaño de la RAM para cuatro semanas, luego redúzcalo al tamaño más pequeño. [12]
- Volcado de memoria activa (Windows 10 y posterior): contiene la mayor parte de la memoria en uso por las aplicaciones de modo de usuario y kernel.
Para analizar los volcados en modo kernel de Windows se utilizan herramientas de depuración para Windows . [13]
Volcados de memoria en modo de usuario
El volcado de memoria en modo de usuario, también conocido como minivolcado , [14] es un volcado de memoria de un solo proceso. Contiene registros de datos seleccionados: memoria de proceso completa o parcial (filtrada); lista de subprocesos con sus pilas de llamadas y estado (como registros o TEB ); información sobre identificadores de los objetos del kernel; lista de bibliotecas cargadas y descargadas . Lista completa de opciones disponibles en MINIDUMP_TYPE
enum. [15]
Misiones espaciales
El programa Voyager de la NASA fue probablemente la primera nave en utilizar rutinariamente la función de volcado de núcleos en el segmento del espacio profundo. La función de volcado de núcleo es una función de telemetría obligatoria para el segmento de espacio profundo, ya que se ha demostrado que minimiza los costos de diagnóstico del sistema [ cita requerida ] . La nave Voyager utiliza volcados de núcleo de rutina para detectar daños en la memoria de los eventos de rayos cósmicos .
Los sistemas de volcado de núcleos de Space Mission se basan principalmente en kits de herramientas existentes para la CPU o el subsistema de destino. Sin embargo, durante la duración de una misión, el subsistema de descarga de núcleos puede modificarse o mejorarse sustancialmente para las necesidades específicas de la misión.
Ver también
- Volcado de base de datos
- Volcado hexagonal
- Copia de archivos
Referencias
- ^ "Información de AIX 7.1" .[ enlace muerto permanente ]
- ^ : Process core file - Solaris 10 File Formats Reference Manual
- ^ Cory Janssen. "¿Qué es un volcado de base de datos? - Definición de Techopedia" . Techopedia.com . Consultado el 29 de junio de 2015 .
- ^ "Cómo configurar una computadora para capturar un volcado de memoria completo" . sophos.com . 12 de julio de 2010 . Consultado el 29 de junio de 2015 .
- ^ Diccionario de inglés de Oxford , sv 'core'
- ^ "definición de volcado de almacenamiento" .
- ^ Rogers, Paul; Carey, David (agosto de 2005). Recopilación y análisis de datos de diagnóstico de z / OS (PDF) . IBM Corporation. págs. 77–93. ISBN 0738493996. Consultado el 29 de enero de 2021 .
- ^ Venkateswaran, Sreekrishnan (2008). Controladores de dispositivos Linux esenciales . Serie de desarrollo de software de código abierto de Prentice Hall. Prentice Hall. pag. 623. ISBN 978-0-13-239655-4. Consultado el 15 de julio de 2010 .
Hasta la llegada de kdump, Linux Kernel Crash Dump (LKCD) era el mecanismo popular para obtener y analizar volcados.
- ^ Proyecto de documentación de Fedora (2010). Guía de seguridad de Fedora 13 . Corporación Fultus. pag. 63. ISBN 978-1-59682-214-6. Consultado el 29 de septiembre de 2010 .
Los servicios de volcado de memoria remota, como
netdump
, transmiten el contenido de la memoria a través de la red sin cifrar. - ^ "core (5) - página de manual de Linux" . man7.org . 2015-12-05 . Consultado el 17 de abril de 2016 .
- ^ "Variedades de archivos de volcado en modo kernel" . Microsoft . Consultado el 22 de febrero de 2018 .
- ^ "Volcado automático de memoria" . Microsoft. 28 de noviembre de 2017 . Consultado el 16 de marzo de 2018 .
- ^ "Introducción a WinDbg (Kernel-Mode)" . Consultado el 30 de septiembre de 2014 .
- ^ "Archivos de minivolcado" . Consultado el 30 de septiembre de 2014 .
- ^ "Enumeración MINIDUMP_TYPE" . Consultado el 30 de septiembre de 2014 .
Notas
- ^ El término núcleo es obsoleto en el hardware actual, pero se usa en muchos sistemas por razones históricas.
- ^ Por ejemplo, z / OS
- ^ a b Algunas máquinas más antiguas eran decimales .
- ^ En el sentido de que los registros eran binarios en lugar de formateados para la impresión.
- ^ Los archivos SYStem OUTput (SYSOUT) son archivos temporales propiedad delsoftware SPOOL .
- ^ Inicialmente, la utilidad por lotes IMDPRDMP; actualmente el comando TSO y elrepertorio del panel ISPF para el sistema de control interactivo de problemas (IPCS).
- ^ IBM proporcionó herramientas para extraer y formatear datos de un volcado sin formato; esas herramientas [f] a menudo hacen que sea más fácil lidiar con un volcado sin formato que incluso con un volcado con formato pequeño.
- ^ Ha habido varios cambios de nombre desde entonces, y z / OS admite varios conjuntos de datos de volcado del sistema con dsnames arbitrarios.
enlaces externos
Descripciones del formato de archivo
- - Manual del programador de Linux - Formatos de archivo
- - Manual de referencia de formatos de archivo de Solaris 10
- - Manual de formatos de archivo HP-UX 11i
- - Manual de formatos de archivo FreeBSD
- - Manual de formatos de archivo OpenBSD
- - Manual de formatos de archivo NetBSD
- - Manual de formatos de archivo de Darwin y macOS
- Archivos de minivolcado
Volcados del núcleo del kernel:
- - Manual de referencia de comandos de administración del sistema Solaris 10
- Nota técnica de Apple TN2118: Volcados del núcleo del núcleo