En informatique , la mémoire fantôme est une technique utilisée pour suivre et stocker des informations sur la mémoire de l'ordinateur utilisée par un programme pendant son exécution. La mémoire fantôme se compose d'octets fantômes qui correspondent à des bits individuels ou à un ou plusieurs octets de la mémoire principale. Ces octets fantômes sont généralement invisibles pour le programme d'origine et sont utilisés pour enregistrer des informations sur la donnée d'origine.
Technique
Cette technique est utilisée par les vérificateurs d'erreurs de mémoire qui peuvent stocker des informations sur les parties de mémoire qui ont été allouées au programme vérifié. Cette mémoire fantôme est ensuite utilisée pour détecter et signaler les accès incorrects à la mémoire, même si le programme ne plante pas en raison d'une erreur de segmentation ou d'un problème similaire. Un vérificateur d'erreurs peut également stocker des informations supplémentaires sur la mémoire, telles que les bits qui ont été définis et ceux qui ne le sont pas. Memcheck , qui fait partie de la suite Valgrind , l'utilise pour détecter un comportement indéfini résultant d'une action sur ou de l'impression de valeurs de mémoire indéfinies.
L'utilisation de la mémoire fantôme ne se limite cependant pas aux vérificateurs d'erreurs de mémoire, car les informations stockées dans ces octets fantômes ne sont pas fixes. Elle est par exemple utilisée par ThreadSanitizer, un détecteur de concurrence de données .
La mémoire fantôme peut être implémentée et utilisée de nombreuses manières différentes et avoir des caractéristiques de performances différentes. Memcheck par exemple suit les valeurs avec une précision de bit , tandis qu'AddressSanitizer , qui fait partie du compilateur clang , est comparativement très rapide. Memcheck, comme tous les outils Valgrind, utilise la traduction binaire et l'instrumentation pour exécuter du code manipulant la mémoire fantôme correspondant à l'utilisation de la mémoire du programme. AddressSanitizer, en revanche, est créé au moment de la compilation et insère du code de vérification des erreurs en ligne dans un programme pendant la compilation. Son implémentation de mémoire fantôme utilise une énorme réservation de mémoire virtuelle pour sa mémoire fantôme, ce qui donne des caractéristiques de performances très différentes.
Général
- Nethercote, N.; Seward, J. (2007). "Comment masquer chaque octet de mémoire utilisé par un programme". Comment masquer chaque octet de mémoire utilisé par un programme. Dans les actes de la 3e conférence internationale sur les environnements d'exécution virtuels (San Diego, Californie, États-Unis) . ACM New York (publié du 13 au 15 juin 2007). pp. 65–74. CiteSeerX
10.1.1.643.7117 . doi :10.1145/1254810.1254820. ISBN
9781595936301. S2CID 10263496.
{{cite book}}:|work=ignoré ( aide ) - http://research.google.com/pubs/pub37752.html