Volcado de memoria

Instantánea de datos de la memoria de la computadora

En informática , un volcado de memoria , volcado de memoria , volcado de memoria por 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 informático en un momento específico, generalmente cuando el programa se ha bloqueado o ha finalizado de forma anormal. [2] En la práctica, normalmente se vuelcan al mismo tiempo otras piezas clave del estado del programa , incluidos los registros del procesador , que pueden incluir el contador del 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 instantáneo ) 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 los 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 frase "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", "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 examen u otros fines. [3] [4]

Fondo

El nombre proviene de memoria de núcleo magnético , [5] la principal forma de memoria de acceso aleatorio desde la década de 1950 hasta la de 1970. El nombre se mantuvo mucho tiempo 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 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 números decimales o de punto flotante ( 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 perteneciente 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 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 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 (Interactive Problem Control System) 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 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 resultar útiles como ayuda para la depuración en diversas situaciones. En los primeros sistemas independientes o de procesamiento por lotes , los volcados de memoria permitían al usuario depurar un programa sin monopolizar la (muy costosa) función de procesamiento para la depuración; una impresión también podía ser más conveniente que la depuración mediante interruptores y luces del panel frontal .

En computadoras compartidas, ya sean de tiempo compartido, de procesamiento por lotes o sistemas de servidor, 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 memoria permiten al usuario guardar un fallo para analizarlo más tarde o fuera del sitio, o para compararlo con otros fallos. En el caso de los equipos integrados , puede resultar poco práctico admitir la depuración en el propio equipo, por lo que el análisis de un volcado puede realizarse en un equipo 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 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 utilizar para capturar datos liberados durante la asignación dinámica de memoria y, por lo 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 memoria para determinar el error mediante un examen directo.

Los volcados instantáneos a veces son una forma conveniente para que las aplicaciones registren resultados de depuración rápidos y sencillos.

Análisis

Un volcado de memoria generalmente representa el contenido completo de las regiones volcadas del espacio de direcciones del proceso volcado. Según el sistema operativo, el volcado puede contener pocas o ninguna estructura de datos para facilitar 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 utilizar una tabla de símbolos , si existe, para ayudar al programador a interpretar los volcados, identificando las 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 especiales llamadas analizadores de volcados para analizar los volcados. Una herramienta popular, disponible en muchos sistemas operativos, es objdump de GNU binutils .

En los sistemas operativos modernos de tipo Unix , los administradores y programadores pueden leer archivos de volcado de memoria utilizando la biblioteca GNU Binutils Binary File Descriptor (BFD), y el depurador GNU (gdb) y objdump que utilizan esta biblioteca. Esta biblioteca proporcionará los datos sin procesar para una dirección dada en una región de memoria desde un volcado de memoria; no sabe nada sobre las variables o estructuras de datos en esa región de memoria, por lo que la aplicación que utiliza la biblioteca para leer el volcado de memoria tendrá que determinar las direcciones de las variables y determinar la disposición de las estructuras de datos por sí misma, por ejemplo, utilizando la tabla de símbolos para el programa que se está depurando.

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

Los volcados de memoria permiten guardar el contexto (estado) de un proceso en un estado determinado para volver a él más tarde. Los sistemas pueden lograr una alta disponibilidad mediante la transferencia de núcleos entre procesadores, a veces a través de los propios archivos de volcado de memoria.

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

Los usuarios de mainframes IBM que ejecutan z/OS pueden explorar volcados de SVC y transacciones utilizando Interactive Problem Control System (IPCS), un lector de volcados de pantalla completa que se introdujo originalmente en OS/VS2 (MVS) , admite scripts escritos por el usuario en REXX y admite la exploración de volcados con solo apuntar y disparar [c] .

Archivos de volcado de memoria

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 la secuencia de bytes, dígitos, [d] caracteres [d] o palabras. En otras máquinas antiguas, un archivo de volcado contenía registros discretos, cada uno de los cuales contenía 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.

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

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

En los sistemas operativos modernos, un espacio de direcciones de 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 memoria generalmente utilizan el formato de imagen ejecutable estándar :

Nombramiento

OS/360 y sucesores

  • En OS/360 y sucesores , un trabajo puede asignar nombres de conjuntos de datos (DSN) arbitrarios 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.
  • El volcado de transacciones más nuevo es muy similar al volcado SVC más antiguo.
  • El sistema de control de problemas interactivo (IPCS), añadido a OS/VS2 por la unidad seleccionable (SU) 57 [13] [14] y parte de cada versión posterior de MVS , se puede utilizar para analizar de forma interactiva los volcados de almacenamiento en DASD . IPCS entiende el formato y las relaciones de los bloques de control del sistema, y ​​puede producir una pantalla formateada para su análisis. Las versiones actuales de IPCS permiten la inspección de espacios de direcciones activos [15] [j] sin tener que realizar primero un volcado de almacenamiento.

Similar a Unix

  • Desde Solaris 8, la utilidad del sistema coreadmpermite configurar el nombre y la ubicación de los archivos principales.
  • Los volcados de procesos de usuario se crean tradicionalmente como core. En Linux (desde las versiones 2.4.21 y 2.6 de la línea principal del núcleo Linux ), se puede especificar un nombre diferente a través de procfs utilizando el /proc/sys/kernel/core_patternarchivo de configuración; el nombre especificado también puede ser una plantilla que contenga etiquetas sustituidas por, por ejemplo, el nombre del archivo ejecutable, el ID del proceso o el motivo del volcado. [16]
  • Los volcados de todo el sistema en sistemas modernos tipo Unix suelen aparecer como vmcoreo vmcore.incomplete.

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

  • Volcado de memoria completo: contiene 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 fallo.
  • Pequeño volcado de memoria: contiene información variada, como el código de detención, parámetros, 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á al tamaño más pequeño. [18]
  • Volcado de memoria activo (Windows 10 y posteriores): contiene la mayor parte de la memoria en uso por el kernel y las aplicaciones en modo usuario.

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

Volcados de memoria en modo usuario

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

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úcleo en el segmento de 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 forma rutinaria para detectar daños en la memoria a causa de eventos de rayos cósmicos .

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

Véase también

Referencias

  1. ^ "Información de AIX 7.1".[ enlace muerto permanente ]
  2. ^ core(5) : Archivo de núcleo de 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 Techopedia". Techopedia.com . Archivado desde el original el 20 de agosto de 2015. Consultado el 29 de junio de 2015 .
  4. ^ "Cómo configurar un equipo 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 Oxford de inglés , 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, 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 0738493996Archivado (PDF) del original el 21 de diciembre de 2018. Consultado el 29 de enero de 2021 .
  8. ^ IBM Corporation (octubre de 2008). z/VM and Linux Operations for z/OS System Programmers (PDF) . pág. 24 . Consultado el 25 de enero de 2022 .
  9. ^ Venkateswaran, Sreekrishnan (2008). Controladores de dispositivos esenciales para Linux. Serie de desarrollo de software de código abierto de Prentice Hall. Prentice Hall. p. 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 archivos de volcado.
  10. ^ 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 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. ^ "Programa de volcado de almacenamiento del núcleo del sistema" (PDF) . IBM 7090/7094 IBSYS Operating System - Version 13 - System Monitor (IBSYS) (PDF) . Systems Reference Library (octava edición). IBM . 30 de diciembre de 1966. págs. 18-20. C28-6248-7 . Consultado el 10 de mayo de 2024 .
  12. ^ "Establecer el patrón de nombre para los 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 .
  13. ^ Información del sistema de control de problemas interactivo (IPCS) de OS/VS2 MVS - SUID 5752-857 (PDF) (Primera edición). IBM . Marzo de 1978. GC34-2004-0 . Consultado el 29 de junio de 2023 .
  14. ^ Guía del usuario y referencia del sistema de control de problemas interactivo OS/VS2 MVS - SUID 5752-857 (PDF) (segunda edición). IBM . Octubre de 1979. GC34-2006-1 . Consultado el 29 de junio de 2023 .
  15. ^ "Subcomando SETDEF: establecer valores predeterminados" (PDF) . z/OS 2.5 - Comandos del sistema de control de problemas interactivo (IPCS) de MVS (PDF) . IBM . 2023-05-12. p. 239. SA23-1382-50 . Consultado el 6 de abril de 2022 . ACTIVO, PRINCIPAL o ALMACENAMIENTO especifica el almacenamiento central para el espacio de direcciones en el que se está ejecutando actualmente IPCS 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.
  16. ^ "core(5) – Página del manual de Linux". man7.org . 2015-12-05. Archivado desde el original el 2013-09-20 . Consultado el 2016-04-17 .
  17. ^ "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 .
  18. ^ "Volcado automático de memoria". Microsoft. 28 de noviembre de 2017. Archivado desde el original el 17 de marzo de 2018. Consultado el 16 de marzo de 2018 .
  19. ^ "Introducción a WinDbg (modo kernel)". Archivado desde el original el 14 de marzo de 2016 . Consultado el 30 de septiembre de 2014 .
  20. ^ "Archivos de minidump". Archivado desde el original el 27 de octubre de 2014. Consultado el 30 de septiembre de 2014 .
  21. ^ "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. ^ Es decir, puede posicionar el cursor en una palabra o doble palabra que contenga una dirección y solicitar una visualización del almacenamiento en esa dirección.
  4. ^ ab Algunas máquinas más antiguas eran decimales .
  5. ^ En el sentido de que los registros eran binarios en lugar de estar formateados para imprimir.
  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 de control de problemas interactivo (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 que de uno formateado.
  9. ^ 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 dsname arbitrarios bajo el control de la instalación y el operador [12] .
  10. ^ Con autoridad de lectura para la clase de instalación BLSACTV.ADDRSPAC, IPCS puede ver cualquier espacio de direcciones.

Descripciones del formato de archivo

Volcados de núcleo del kernel:

  • savecore(1M) –  Manual de referencia de Solaris 11.4
  • Nota técnica de Apple TN2118: volcados de núcleo del kernel
Obtenido de "https://es.wikipedia.org/w/index.php?title=Volcado_de_núcleo&oldid=1251122899"