En informática , la memoria de sombra es una técnica que se utiliza para rastrear y almacenar información en la memoria de la computadora que utiliza un programa durante su ejecución. La memoria de sombra consiste en bytes de sombra que se asignan a bits individuales o a uno o más bytes en la memoria principal. Estos bytes de sombra suelen ser invisibles para el programa original y se utilizan para registrar información sobre el dato original.
La técnica es utilizada por los verificadores de errores de memoria que pueden almacenar información sobre qué partes de la memoria han sido asignadas al programa que se está verificando. Esta memoria sombra se utiliza luego para detectar e informar accesos incorrectos a la memoria, incluso aunque el programa no se esté bloqueando debido a un fallo de segmentación o algo similar. Un verificador de errores también puede almacenar información adicional sobre la memoria, como qué bits han sido definidos y cuáles no. Memcheck , parte de la suite Valgrind , utiliza esto para detectar comportamiento indefinido que resulta de actuar sobre valores de memoria no definidos o imprimirlos.
Sin embargo, el uso de la memoria oculta no se limita a los comprobadores de errores de memoria, ya que la información almacenada en estos bytes de memoria oculta no es fija. Por ejemplo, la utiliza ThreadSanitizer, un detector de carreras de datos .
La memoria de sombra se puede implementar y utilizar de muchas formas diferentes y tiene diferentes características de rendimiento. Memcheck, por ejemplo, rastrea valores con precisión de bits , mientras que AddressSanitizer , parte del compilador clang , es comparativamente muy rápido. Memcheck, como todas las herramientas de Valgrind, utiliza traducción binaria e instrumentación para ejecutar código que manipula la memoria de sombra correspondiente al uso de memoria del programa. AddressSanitizer, por otro lado, se crea en tiempo de compilación e inserta código de verificación de errores en línea en un programa durante la compilación. Su implementación de memoria de sombra utiliza una enorme reserva de memoria virtual para su memoria de sombra, lo que proporciona características de rendimiento muy diferentes.
{{cite book}}
: |work=
ignorado ( ayuda )