stringtranslate.com

Volcado de memoria

En informática , un volcado de núcleo , [un] volcado de memoria , volcado de caída , volcado de almacenamiento , volcado de sistema o volcado ABEND [1] consiste en el estado registrado de la memoria de trabajo de un programa de computadora en un momento específico, generalmente cuando el programa se ha bloqueado o ha terminado de forma anormal. [2] En la práctica, otras piezas clave del estado del programa generalmente se volcan al mismo tiempo, incluidos los registros del procesador , que pueden incluir el contador del programa y el puntero de la pila , información de administración de memoria y otras banderas e información del procesador y del sistema operativo. Un volcado instantáneo (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 núcleo 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 del núcleo. 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 núcleo", "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 principal forma de memoria de acceso aleatorio desde los años cincuenta hasta los setenta. El nombre se mantuvo mucho después de que la tecnología de núcleo magnético se volviera obsoleta.

Los primeros volcados de núcleo eran impresiones en papel [6] del contenido de la memoria, generalmente organizados en columnas de números octales o hexadecimales (un " volcado hexadecimal "), a veces acompañados de sus interpretaciones como instrucciones en lenguaje de máquina , cadenas de texto o decimales o flotantes. números de puntos ( cf. desensamblador ).

A medida que aumentaron los tamaños de memoria y se desarrollaron utilidades de análisis post mortem, los volcados se escribieron en medios magnéticos como cintas o discos.

En lugar de mostrar únicamente el contenido de la memoria aplicable, los sistemas operativos modernos suelen generar un archivo que contiene una imagen de la memoria que pertenece al proceso bloqueado, o las imágenes de 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 (Sistema de control interactivo de problemas) en IBM z/OS , [7] DVF ( Dump Viewing Facility) en IBM z/VM , [8] WinDbg en Microsoft Windows, Valgrind u otros depuradores.

En algunos sistemas operativos [b] una aplicación u operador puede 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 útiles ayudas de depuración en varias situaciones. En los primeros sistemas independientes o de procesamiento por lotes , los volcados de núcleo permitían al usuario depurar un programa sin monopolizar las (muy caras) instalaciones informáticas para la depuración; una copia impresa también podría ser más conveniente que depurar usando interruptores y luces del panel frontal .

En computadoras compartidas, 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 inmediatamente.

Los volcados de núcleo permiten al usuario guardar un fallo para un análisis posterior o externo, o para compararlo con otros fallos. Para computadoras integradas , puede resultar poco práctico admitir la depuración en la propia computadora, por lo que el análisis de un volcado puede realizarse en una computadora diferente. Algunos sistemas operativos, como las primeras versiones de Unix , no admitían la conexión de depuradores a los procesos en ejecución, por lo que eran necesarios volcados de núcleo para ejecutar un depurador en el contenido de la memoria de un proceso.

Los volcados de núcleo se pueden utilizar para capturar datos liberados durante la asignación de memoria dinámica y, por tanto, se pueden utilizar 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 núcleo para determinar el error mediante 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 la interpretación de las regiones de memoria. En estos sistemas, una interpretación exitosa requiere que el programa o el usuario que intenta interpretar el volcado comprenda la estructura del uso de la memoria del programa.

Un depurador puede utilizar una tabla de símbolos , si existe, para ayudar al programador a interpretar volcados, identificar variables simbólicamente y mostrar el código fuente; Si la tabla de símbolos no está disponible, es posible realizar menos interpretaciones del volcado, pero aún puede haber suficientes posibilidades para determinar la causa del problema. También existen herramientas especiales 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 (BFD) GNU Binutils y el depurador GNU (gdb) y objdump que utilizan esta biblioteca. Esta biblioteca proporcionará los datos sin procesar para una dirección determinada en una región de memoria a partir de un volcado de núcleo; 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 núcleo tendrá que determinar las direcciones de las variables y determinar el diseño de las estructuras de datos, por ejemplo, usando la tabla de símbolos. para el programa en proceso de depuración.

Los analistas de volcados de memoria de sistemas Linux pueden utilizar kdump o Linux Kernel Crash Dump (LKCD). [9]

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 transfiriendo el núcleo entre procesadores, a veces a través de los propios archivos de volcado del núcleo.

El núcleo también se puede volcar en un host remoto a través de una red (lo cual es un riesgo para la seguridad). [10]

Archivos de volcado de núcleo

Formato

En 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 una secuencia de bytes, dígitos, 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 lo escribía 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, contenidos de almacenamiento, etc., todos convertidos en formularios imprimibles. Las versiones posteriores agregaron la capacidad de escribir volcados [d] sin formato , llamados en ese momento volcados de imágenes centrales.

En los sistemas operativos modernos, el espacio de direcciones de un proceso puede contener espacios y puede 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 tipo Unix , los volcados de núcleo generalmente utilizan el formato de imagen ejecutable estándar :

Nombrar

OS/360 y sucesores

tipo Unix

Otros

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: [16]

Para analizar los volcados en modo kernel de Windows se utilizan herramientas de depuración para Windows . [18]

Volcados de memoria en modo de usuario

El volcado de memoria en modo de usuario, también conocido como minivolcado , [19] es un volcado de memoria de un solo proceso. Contiene registros de datos seleccionados: memoria de proceso total 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 núcleo; Lista de bibliotecas cargadas y descargadas . Lista completa de opciones disponibles en MINIDUMP_TYPEenum. [20]

Misiones espaciales

El programa Voyager de la NASA fue probablemente la primera nave en utilizar de forma rutinaria 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 del 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úcleos de rutina para detectar daños en la memoria causados ​​por 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 subsistema de destino. Sin embargo, durante la duración de una misión, el subsistema de volcado de núcleos puede modificarse o mejorarse sustancialmente para las necesidades específicas de la misión.

Ver también

Referencias

  1. ^ "Información de AIX 7.1".[ enlace muerto permanente ]
  2. ^ core(5) : Archivo central del proceso -  Manual de referencia de formatos de archivo de Solaris 11.4
  3. ^ Cory Janssen (25 de octubre de 2012). "¿Qué es un volcado de base de datos? - Definición de Techinfo". Techinfo.com . Archivado desde el original el 20 de agosto de 2015 . Consultado el 29 de junio de 2015 .
  4. ^ "Cómo configurar una computadora para capturar un volcado de memoria completo". sophos.com . 12 de julio de 2010. Archivado desde el original el 1 de julio de 2015 . Consultado el 29 de junio de 2015 .
  5. ^ Diccionario de ingles Oxford , sv 'núcleo'
  6. ^ "definición de volcado de almacenamiento". Archivado desde el original el 11 de mayo de 2013 . Consultado el 3 de abril de 2013 .
  7. ^ Rogers, Pablo; Carey, David (agosto de 2005). Recopilación y análisis de datos de diagnóstico de z/OS (PDF) . Corporación IBM. págs. 77–93. ISBN 0738493996. Archivado (PDF) desde el original el 21 de diciembre de 2018 . Consultado el 29 de enero de 2021 .
  8. ^ IBM Corporation (octubre de 2008). Operaciones de z/VM y Linux para programadores de sistemas z/OS (PDF) . pag. 24 . Consultado el 25 de enero de 2022 .
  9. ^ 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. Archivado desde el original el 26 de junio de 2014 . 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.
  10. ^ 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. Archivado desde el original el 26 de junio de 2014 . 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.
  11. ^ "Configuración del patrón de nombre para conjuntos de datos de volcado" (PDF) . Comandos del sistema z/OS 2.5 MVS (PDF) . 25 de marzo de 2022. págs. 474–475. SA38-0666-50 . Consultado el 6 de abril de 2022 .
  12. ^ Información del sistema del sistema interactivo de control de problemas (IPCS) OS/VS2 MVS - SUID 5752-857 (PDF) (Primera edición). IBM . Marzo de 1978. GC34-2004-0 . Consultado el 29 de junio de 2023 .
  13. ^ Guía y referencia del usuario del sistema interactivo de control de problemas OS/VS2 MVS - SUID 5752-857 (PDF) (Segunda ed.). IBM . Octubre de 1979. GC34-2006-1 . Consultado el 29 de junio de 2023 .
  14. ^ "Subcomando SETDEF: establecer valores predeterminados" (PDF) . z/OS 2.5 - Comandos del sistema interactivo de control de problemas (IPCS) MVS (PDF) . IBM . 2023-05-12. pag. 239. SA23-1382-50 . Consultado el 6 de abril de 2022 . ACTIVE, MAIN o STORAGE especifica el almacenamiento central para el espacio de direcciones en el que IPCS se está ejecutando actualmente y le permite acceder a ese almacenamiento activo como fuente de volcado. Puede acceder al almacenamiento privado y a cualquier almacenamiento común al que pueda acceder un programa no autorizado.
  15. ^ "núcleo (5) - página del manual de Linux". man7.org . 2015-12-05. Archivado desde el original el 20 de septiembre de 2013 . Consultado el 17 de abril de 2016 .
  16. ^ "Variedades de archivos de volcado en modo kernel". Microsoft. Archivado desde el original el 22 de febrero de 2018 . Consultado el 22 de febrero de 2018 .
  17. ^ "Volcado de memoria automático". Microsoft. 28 de noviembre de 2017. Archivado desde el original el 17 de marzo de 2018 . Consultado el 16 de marzo de 2018 .
  18. ^ "Introducción a WinDbg (modo kernel)". Archivado desde el original el 14 de marzo de 2016 . Consultado el 30 de septiembre de 2014 .
  19. ^ "Archivos de minivolcado". Archivado desde el original el 27 de octubre de 2014 . Consultado el 30 de septiembre de 2014 .
  20. ^ "Enumeración MINIDUMP_TYPE". Archivado desde el original el 11 de enero de 2015 . Consultado el 30 de septiembre de 2014 .

Notas

  1. ^ El término núcleo está obsoleto en el hardware contemporáneo, pero se utiliza en muchos sistemas por razones históricas.
  2. ^ Por ejemplo, z/OS
  3. ^ ab Algunas máquinas más antiguas eran decimales .
  4. ^ En el sentido de que los registros eran binarios en lugar de formateados para imprimir.
  5. ^ Los archivos SYStem OUTput (SYSOUT) son archivos temporales propiedad del software SPOOL .
  6. ^ Inicialmente, la utilidad por lotes IMDPRDMP; actualmente el comando TSO y el repertorio del panel ISPF para el Sistema Interactivo de Control de Problemas (IPCS).
  7. ^ IBM proporcionó herramientas para extraer y formatear datos de un volcado sin formato; esas herramientas [f] a menudo hacían que fuera más fácil lidiar con un volcado sin formato que con uno formateado.
  8. ^ Desde entonces, IBM agregó la capacidad de tener hasta cien conjuntos de datos de volcado nombrados SYS1.DUMPnn(nn de 00 a 99). z/OS admite múltiples conjuntos de datos de volcado del sistema con patrones de nombre de dominio arbitrarios bajo instalación y control del operador [11] .
  9. ^ Con autoridad de lectura para la clase de instalación BLSACTV.ADDRSPAC, IPCS puede ver cualquier espacio de direcciones.

enlaces externos

Descripciones del formato de archivo.

Volcados del núcleo del kernel: