Articulo de referencia

volcado de memoria

En informática , un volcado de memoria , volcado de fallo , volcado de almacenamiento , volcado del sistema o volcado ABEND [1 ] consiste en el estado registrado de la memoria d...

En informática , un volcado de memoria , volcado de fallo , volcado de almacenamiento , volcado del sistema o volcado ABEND [1 ] consiste en el estado registrado de la memoria de trabajo de un programa informático en un momento específico, generalmente cuando el programa se ha bloqueado o ha terminado de forma anormal. [ 2 ] En la práctica, otras partes clave del estado del programa suelen volcarse al mismo tiempo, incluidos los registros del procesador , que pueden incluir el contador de programa y el puntero de pila , información de gestión de memoria y otros indicadores e información del procesador y del sistema operativo. Un volcado de instantánea (o volcado de instantánea ) es un volcado de memoria solicitado por el operador del ordenador o por el programa en ejecución, tras el 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 activa automáticamente un volcado de memoria. Por extensión, la expresión "volcar memoria" 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" o simplemente "volcado" también se ha convertido en jerga para indicar cualquier salida de una gran cantidad de datos sin procesar para su posterior análisis u otros fines. [ 3 ] [ 4 ]

Fondo

El nombre proviene de la memoria de núcleo magnético , [ 5 ] [ 6 ] la principal forma de memoria de acceso aleatorio desde la década de 1950 hasta la de 1970. El nombre se ha mantenido mucho después de que la tecnología de núcleo magnético quedara obsoleta.

Los primeros volcados de memoria eran impresiones en papel [ 7 ] 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 máquina , cadenas de texto o números decimales o de punto flotante ( cf. desensamblador ).

A medida que aumentaba la capacidad de memoria y se desarrollaban utilidades de análisis post mortem, los volcados de memoria se escribían en soportes 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 perteneciente al proceso que falló, o las imágenes de memoria de partes del espacio de direcciones relacionadas con ese proceso, junto con otra información como los valores de los registros del procesador, el contador de programa, los indicadores del sistema y otra información útil para determinar la causa raíz del fallo. Estos archivos se pueden ver como texto, imprimir o analizar con herramientas especializadas como elfdump en sistemas Unix y similares a Unix , objdump y kdump en Linux , IPCS (Sistema de control de problemas interactivo) en IBM z/OS , [ 8 ] DVF (Instalación de visualización de volcados) en IBM z/VM , [ 9 ] WinDbg en Microsoft Windows, Valgrind u otros depuradores.

En algunos sistemas operativos [ b ] una aplicación o un operador puede solicitar una instantánea de bloques de almacenamiento seleccionados, en lugar de todo el almacenamiento utilizado por la aplicación o el sistema operativo.

Usos

Los volcados de memoria pueden ser útiles para la depuración en diversas situaciones. En los primeros sistemas autónomos o de procesamiento por lotes , permitían al usuario depurar un programa sin monopolizar los recursos informáticos (muy costosos) para la depuración; además, una impresión podía resultar más práctica que la depuración mediante interruptores y luces del panel frontal .

En los ordenadores compartidos, ya sean de tiempo compartido, procesamiento por lotes o sistemas de servidor, los volcados de memoria permiten depurar el sistema operativo sin conexión , de modo que el sistema pueda volver a funcionar inmediatamente.

Los volcados de memoria permiten al usuario guardar un fallo para su posterior análisis, ya sea de forma remota o comparativa con otros fallos. En el caso de los sistemas embebidos , puede resultar poco práctico depurar el sistema en sí, por lo que el análisis del volcado puede realizarse en otro equipo. 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 los volcados de memoria eran necesarios para ejecutar un depurador en el contenido de la memoria de un proceso.

Los volcados de memoria se pueden usar para capturar datos liberados durante la asignación dinámica de memoria y, por lo tanto, para recuperar información de un programa que ya no se está ejecutando. En ausencia de un depurador interactivo, un programador diligente puede usar el volcado de memoria para determinar el error mediante un análisis directo.

En ocasiones, los volcados de memoria instantáneos son una forma práctica para que las aplicaciones registren información de depuración rápida y sencilla.

Análisis

Un volcado de memoria 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 que facilite 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 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, la interpretación del volcado es menor, pero aún podría ser suficiente para determinar la causa del problema. También existen herramientas especializadas llamadas analizadores de volcados para analizarlos. 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 memoria utilizando la biblioteca GNU Binutils Binary File Descriptor (BFD), así como el depurador GNU (gdb) y objdump, que utilizan esta biblioteca. Esta biblioteca proporciona los datos sin procesar para una dirección específica en una región de memoria a partir de un volcado de memoria; no tiene información sobre las variables ni las estructuras de datos en dicha región, por lo que la aplicación que utilice la biblioteca para leer el volcado de memoria deberá determinar por sí misma las direcciones de las variables y la estructura de datos, por ejemplo, utilizando la tabla de símbolos del programa que se está depurando.

Los analistas de volcados de memoria de sistemas Linux pueden usar kdump o el Volcado de Memoria del Núcleo de Linux (LKCD). [ 10 ]

Los volcados de memoria permiten guardar el contexto (estado) de un proceso en un estado determinado para poder retomarlo posteriormente. Los sistemas pueden alcanzar una alta disponibilidad mediante la transferencia de memoria entre procesadores, a veces a través de los propios archivos de volcado de memoria.

El núcleo también puede volcarse en un host remoto a través de una red (lo cual supone un riesgo de seguridad). [ 11 ]

OS/360 introdujo la herramienta de servicio IMDPRDMP para imprimir volcados de memoria independientes y SVC. Este programa formatea varios bloques de control del sistema, además de imprimir áreas de almacenamiento en formato hexadecimal y EBCDIC . Las versiones para OS/VS1 y OS/VS2 se denominan HMDPRDMP y AMDPRDMP, respectivamente.

El Sistema Interactivo de Control de Problemas (IPCS) es un lector de volcados de pantalla completa que IBM introdujo para OS/VS2 (MVS) , DOS/VSE y VM/370 . La versión de MVS realiza funciones similares a AMDPRDMP y utiliza descripciones de bloques de control compatibles para el formato. IBM finalmente abandonó AMDPRDMP en favor de IPCS. IPCS en MVS admite scripts en CLIST y REXX .

Los usuarios de mainframes de IBM que ejecutan z/OS pueden explorar tanto los volcados SVC como los de transacciones mediante IPCS, que admite scripts escritos por el usuario en REXX y admite la exploración mediante apuntar y disparar [ c ] de los volcados.

archivos de volcado de memoria

Formato

En los sistemas operativos más antiguos y sencillos, 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, caracteres o palabras . En otros sistemas , un archivo de volcado contenía registros discretos, cada uno con una dirección de almacenamiento y su contenido asociado. En las primeras máquinas de este tipo , el volcado solía ser escrito por un programa de volcado independiente, en lugar de por la aplicación o el sistema operativo.

El monitor IBSYS para el IBM 7090 incluía un programa de volcado de almacenamiento del núcleo del sistema [ 12 ] que admitía volcados post mortem y instantáneos.

En el IBM System/360 , los sistemas operativos estándar generaban volcados ABEND y SNAP formateados, con las direcciones, los registros, el contenido de almacenamiento, etc., convertidos a formatos imprimibles. Las versiones posteriores añadieron la capacidad de generar volcados [ e ] sin formato , denominados en aquel entonces volcados de imagen de núcleo (también conocidos como volcados SVC).

En los sistemas operativos modernos, el espacio de direcciones de un proceso puede contener huecos y puede compartir páginas con otros procesos o archivos, por lo que se utilizan representaciones más elaboradas; estas también pueden incluir otra información sobre el estado del programa en el momento del volcado.

En los sistemas tipo Unix , los volcados de memoria generalmente utilizan el formato de imagen ejecutable estándar :

Nomenclatura

OS/360 y sus sucesores

En OS/360 y sucesores , un trabajo puede asignar nombres de conjuntos de datos arbitrarios (dsnames) a los ddnames SYSABENDy SYSUDUMPpara un volcado ABEND formateado y a ddnames arbitrarios para volcados SNAP, o definir esos ddnames como SYSOUT. [ f ] La función de Evaluación y Reparación de Daños (DAR) agregó un volcado de almacenamiento automático sin formato [ h ] al conjunto de datos SYS1.DUMP[ i ] en el momento de la falla, así como un volcado de consola solicitado por el operador. Un trabajo puede asignar un dsname arbitrario al ddname SYSMDUMPpara un volcado ABEND sin formato, o definir ese ddname como SYSOUT. [ j ] El volcado de transacción más reciente es muy similar al volcado SVC anterior. El Sistema Interactivo de Control de Problemas (IPCS), agregado a OS/VS2 por la Unidad Seleccionable (SU) 57 [ 14 ] [ 15 ] y parte de cada versión MVS posterior , se puede utilizar para analizar interactivamente volcados de almacenamiento en DASD . IPCS entiende el formato y las relaciones de los bloques de control del sistema y puede producir una visualización formateada para su análisis. Las versiones actuales de IPCS permiten la inspección de espacios de direcciones activos [ 16 ] [ k ] sin realizar primero un volcado de almacenamiento y de volcados sin formato en SPOOL.

Similar a Unix

Desde Solaris  8, la utilidad del sistema coreadmpermite configurar el nombre y la ubicación de los archivos de volcado. Los volcados de procesos de usuario se crean tradicionalmente como core. En Linux (desde las versiones 2.4.21 y 2.6 del núcleo principal de Linux ), se puede especificar un nombre diferente a través de procfs usando el /proc/sys/kernel/core_patternarchivo 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. [ 17 ] Los volcados de todo el sistema en sistemas modernos tipo Unix a menudo aparecen como vmcoreo vmcore.incomplete.

Otros

Los sistemas como Microsoft Windows , que utilizan extensiones de nombre de archivo , pueden usar la extensión .dmp; por ejemplo, los volcados de memoria pueden llamarse memory.dmpo \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

Existen cinco tipos de volcados en modo kernel: [ 18 ]

  • Volcado completo de memoria : contiene toda la memoria física del sistema de destino. 
  • Volcado de memoria del kernel : contiene toda la memoria que el kernel estaba utilizando en el momento del fallo. 
  • Volcado de memoria pequeño : contiene diversa información, como el código de parada, los parámetros, la lista de controladores de dispositivos cargados, etc. 
  • Volcado de memoria automático ( Windows 8 y posteriores) : igual que el volcado de memoria del kernel, pero si el archivo de paginación es administrado por el sistema y 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 durante cuatro semanas y luego lo reducirá a un tamaño menor. [ 19 ] 
  • Volcado de memoria activa (Windows 10 y versiones posteriores) : contiene la mayor parte de la memoria utilizada por el núcleo y las aplicaciones en modo de usuario. 

Para analizar los volcados del modo kernel de Windows se utilizan las Herramientas de depuración para Windows , un conjunto que incluye herramientas como WinDbg y DumpChk. [ 20 ] [ 21 ] [ 22 ]

Volcados de memoria en modo usuario

El volcado de memoria en modo usuario, también conocido como minivolcado , [ 23 ] es un volcado de memoria de un único proceso. Contiene registros de datos seleccionados: memoria del proceso completa o parcial (filtrada); lista de los subprocesos con sus pilas de llamadas y estado (como registros o TEB ); información sobre los identificadores de los objetos del kernel; lista de bibliotecas cargadas y descargadas . Lista completa de opciones disponibles en MINIDUMP_TYPEenum. [ 24 ]

misiones espaciales

El programa Voyager de la NASA fue probablemente la primera nave en utilizar de forma rutinaria la función de volcado de memoria en el segmento de espacio profundo. Esta función es una característica de telemetría obligatoria para dicho segmento, ya que se ha demostrado que minimiza los costos de diagnóstico del sistema. Las naves Voyager utilizan volcados de memoria rutinarios para detectar daños en la memoria causados ​​por eventos de rayos cósmicos .

Los sistemas de volcado de memoria para misiones espaciales se basan principalmente en herramientas ya existentes para la CPU o subsistema de destino. Sin embargo, durante el transcurso de una misión, el subsistema de volcado de memoria puede modificarse o mejorarse sustancialmente para adaptarse a las necesidades específicas de la misión.

Véase también

Referencias

  1. "Información sobre AIX 7.1" .
  2. : Archivo de volcado de memoria del proceso Manual de referencia de formatos de archivo de Solaris 11.4core(5)   
  3. Cory Janssen (25 de octubre de 2012). "¿Qué es un volcado de base de datos? - Definición de Techopedia" . Techopedia.com . Archivado del original el 20 de agosto de 2015. Consultado el 29 de junio de 2015 .
  4. "Cómo configurar un ordenador para realizar un volcado completo de memoria" . sophos.com . 12 de julio de 2010. Archivado del original el 1 de julio de 2015. Consultado el 29 de junio de 2015 .
  5. Diccionario Oxford de inglés , sv 'core'
  6. Brian Kernighan . UNIX: una historia y unas memorias . ISBN 9781695978553.
  7. "definición de volcado de almacenamiento" . Archivado del original el 11 de mayo de 2013. Consultado el 3 de abril de 2013 .
  8. 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. Archivado (PDF) del original el 21 de diciembre de 2018. Recuperado el 29 de enero de 2021 .
  9. IBM Corporation (octubre de 2008). Operaciones con z/VM y Linux para programadores de sistemas z/OS (PDF) . pág. 24. Consultado el 25 de enero de 2022 . 
  10. Venkateswaran, Sreekrishnan (2008). Controladores de dispositivos Linux esenciales . Serie de desarrollo de software de código abierto de Prentice Hall. Prentice Hall. pág. 623. ISBN  978-0-13-239655-4Archivado del original el 26/06/2014 . Consultado el 15/07/2010 . Hasta la llegada de kdump, Linux Kernel Crash Dump (LKCD) era el mecanismo más utilizado para obtener y analizar volcados de memoria.
  11. Proyecto de Documentación de Fedora (2010). Guía de seguridad de Fedora 13. Fultus Corporation. pág. 63. ISBN  978-1-59682-214-6. Archivado del original el 26-06-2014 . Recuperado el 29-09-2010 . Los servicios de volcado de memoria remoto, como netdump, transmiten el contenido de la memoria a través de la red sin cifrar.
  12. "Programa de volcado de almacenamiento del núcleo del sistema" (PDF) . Sistema operativo IBM 7090/7094 IBSYS - Versión 13 - Monitor del sistema (IBSYS) (PDF) . Biblioteca de referencia de sistemas (octava ed.). IBM . 30 de diciembre de 1966. págs. 18–20 . C28-6248-7 . Consultado el 10 de mayo de 2024 .  
  13. "Configuración del patrón de nombres 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 . 
  14. Información del sistema OS/VS2 MVS Interactive Problem Control System (IPCS) - SUID 5752-857 (PDF) (Primera ed.). IBM . Marzo de 1978. GC34-2004-0 . Consultado el 29 de junio de 2023 . 
  15. Guía del usuario y referencia del sistema interactivo de control de problemas OS/VS2 MVS - SUID 5752-857 (PDF) (Segunda edición). IBM . Octubre de 1979. GC34-2006-1 . Consultado el 29 de junio de 2023 . 
  16. "Subcomando SETDEF: establece valores predeterminados" (PDF) . z/OS 2.5 - Comandos del sistema de control de problemas interactivo (IPCS) de MVS (PDF) . IBM . 12 de mayo de 2023. pág. 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 origen del volcado. Puede acceder al almacenamiento privado y a cualquier almacenamiento común accesible por un programa no autorizado. 
  17. "core(5) – Página del manual de Linux" . man7.org . 5 de diciembre de 2015. Archivado del original el 20 de septiembre de 2013. Consultado el 17 de abril de 2016 .
  18. "Variedades de archivos de volcado en modo kernel" . Microsoft. Archivado del original el 22 de febrero de 2018. Consultado el 22 de febrero de 2018 .
  19. "Volcado automático de memoria" . Microsoft. 28 de noviembre de 2017. Archivado del original el 17 de marzo de 2018. Consultado el 16 de marzo de 2018 .
  20. "Primeros pasos con WinDbg (modo kernel)" . Archivado del original el 14 de marzo de 2016. Consultado el 30 de septiembre de 2014 .
  21. "Primeros pasos con la depuración de Windows" . Consultado el 14 de diciembre de 2024 .
  22. "Herramientas incluidas en Herramientas de depuración para Windows" . Consultado el 14 de diciembre de 2024 .
  23. "Archivos Minidump" . Archivado del original el 27 de octubre de 2014. Consultado el 30 de septiembre de 2014 .
  24. "Enumeración MINIDUMP_TYPE" . Archivado del original el 11 de enero de 2015. Recuperado el 30 de septiembre de 2014 .

Notas

  1. El término núcleo está obsoleto en el hardware contemporáneo, pero se sigue utilizando en muchos sistemas por razones históricas.
  2. Por ejemplo, z/OS
  3. Es decir, puede colocar el cursor en una palabra o palabra doble que contenga una dirección y solicitar que se muestre el almacenamiento en esa dirección.
  4. 1 2 Algunas máquinas más antiguas eran decimales .
  5. En el sentido de que los registros eran binarios en lugar de estar formateados para su impresión.
  6. Los archivos de SALIDA del SISTEMA (SYSOUT) son archivos temporales propiedad del software SPOOL .
  7. 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).
  8. IBM proporcionó herramientas para extraer y formatear datos de un volcado sin formato; esas herramientas [ g ] a menudo facilitaban el manejo de un volcado sin formato en comparación con un volcado formateado.
  9. Desde entonces, IBM agregó la capacidad de tener hasta cien conjuntos de datos de volcado nombradosSYS1.DUMPnn(nn de 00 a 99). z/OS admite múltiples conjuntos de datos de volcado del sistema con patrones de dsname arbitrarios bajo el control de la instalación y del operador [ 13 ] .
  10. Si SYSMDUMP está asignado, no se escribe ningún volcado formateado en SYSABEND ni en SYSUDUMP.
  11. Con autorización de lectura para la clase de instalación BLSACTV.ADDRSPAC, IPCS puede ver cualquier espacio de direcciones.

Descripciones del formato de archivo

Volcados de memoria del kernel:

  • savecore(1M) Manual de referencia de Solaris 11.4 
  • Nota técnica de Apple TN2118: Volcados de memoria del kernel