Solution 1 :
Évidemment, memtest86+ ne peut pas tester la région mémoire qui contient actuellement le code exécutable memtest86+ (mais s'il y a des erreurs de mémoire dans cette région, il est très probable que le test lui-même plante). Cependant, memtest86+ est capable de déplacer son propre code vers une adresse différente lors de l'exécution, et en utilisant cette astuce, il est capable de tester toute la mémoire qu'il est autorisé à utiliser par le micrologiciel (BIOS) - mais pas tout à la fois.
Ce déplacement de code est décrit dans README.background à l'intérieur de l'archive de code source memtest86+ (le fichier est légèrement obsolète - par exemple, il indique que les adresses utilisées pour le code memtest86+ sont 0x2000 et 0x200000, mais l'adresse basse telle que définie dans la source est en fait 0x10000, et l'adresse haute est soit 0x2000000 soit 0x300000 selon la quantité de mémoire de la machine).
Mais même avec cette astuce de relocalisation, memtest86+ n'est pas en mesure de tester toute la mémoire pour les raisons suivantes :
-
Habituellement, le micrologiciel (BIOS) réserve certaines régions de RAM pour son propre usage (par exemple, les tables ACPI). Bien que ces régions de RAM soient accessibles par le processeur, y écrire quoi que ce soit peut entraîner un comportement imprévisible.
-
Une partie de la RAM est utilisée pour le mode de gestion du système et n'est même pas accessible depuis le processeur en dehors du code SMM privilégié.
-
La plage d'adresses RAM entre 640K et 1M est inaccessible en raison des bizarreries de la disposition de la mémoire du PC hérité (une partie de cette RAM peut être utilisée comme ombre pour la ROM BIOS et pour SMM, d'autres parties peuvent être complètement inaccessibles).
Solution 2 :
Non, memtest ne peut pas tester sa propre mémoire. Cependant, il est si petit (seulement quelques Ko) que cela n'a guère d'importance. MODIF : cette affirmation est fausse car, comme indiqué dans la réponse sélectionnée, memtest peut se déplacer dynamiquement pour tester tous mémoire adressable par l'utilisateur.
--
En théorie, les processeurs modernes peuvent, au démarrage, configurer une partie de leur cache en tant que mémoire programmable, à partir de très petits programmes (comme memtest) peuvent être exécutés sans toucher DRAM du tout.
Cependant, il s'agit d'une fonctionnalité spécifique au modèle (qui nécessite la prise en charge du BIOS) et je ne pense pas que memtest l'utilise.