Je lisais une autre question sur Memtest et j'ai commencé à me demander: comment fonctionne Memtest86 avec une mauvaise RAM?
Pensez-y: Memtest86 doit stocker des informations sur la taille de la RAM, ce qu'elle a mis dans la RAM pour comparer plus tard, où mettre à jour l'écran et beaucoup plus d'informations. Le fait d'utiliser une variable nécessite que la RAM fonctionne correctement. Mais comment pouvez-vous obtenir des résultats fiables lorsque vous exécutez le programme sur une mémoire RAM éventuellement défectueuse?
Une analogie à cela est l'exécution d'un programme de vérification du disque dur à partir du disque dur que vous vérifiez. Vous ne feriez jamais ça, un mauvais bloc pourrait affecter le programme de nombreuses façons inattendues
Comment fonctionne Memtest86 avec une mauvaise RAM?
la source
Réponses:
Principalement parce que la quantité de RAM nécessaire pour charger le memtest est extrêmement faible. Si le programme s'exécute, il est probable que la mémoire dans cette zone est correcte.
La chance que-
Est-hautement-improbable.
la source
Memtest est assez durable en ce qu'il ne dépend pas vraiment de la RAM qu'il teste.
Par exemple, le test 0 utilise un algorithme de marche , et tout ce dont il a besoin pour ce test est un seul pointeur (probablement mis en cache), car il ne compare que deux adresses mémoire consécutives.
Donc, si nous avons une clé RAM 3 bits, memtest la charge avec ceci:
Et si la première adresse est corrompue, elle comparera deux emplacements aléatoires:
Et cela échouera toujours, même si les variables de memtest sont corrompues.
la source
Memtest doit absolument faire au moins une supposition, qu'au moins la mémoire dans laquelle il est lui-même chargé est bonne. Après cela, il est capable de numériser et de tester le reste de la mémoire dans son intégralité.
Il se peut qu'il soit toujours capable de lire et de détecter des erreurs dans sa propre mémoire car, étant le seul programme chargé, il devrait avoir accès à pratiquement toute la mémoire du système et donc pouvoir lire et comparer cette mémoire à un échantillon "bien connu".
la source
En étant petit. Si de la RAM est mauvaise, plus le programme est petit, moins il est probable qu'une partie du programme soit dans l'un des mauvais endroits. Étant donné que le démarrage suffisamment loin pour charger le test de mémoire impliquera un code de micrologiciel utilisant de la RAM, il y a de fortes chances que si vous pouvez aller aussi loin, les zones faibles de RAM fonctionnent suffisamment bien pour que memtest puisse fonctionner à partir d'elles.
la source
Eh bien, c'est ce que fait Memtest - il écrit divers modèles (connus) dans votre RAM, le relit et compare. S'il y a une mauvaise correspondance, votre RAM doit être corrompue.
Bien que cela soit vrai, il y a des cas où vous n'avez pas le choix. Tant que vous pouvez charger le programme avec succès, il devrait être en mesure d'effectuer ses tâches de diagnostic (même s'il s'exécute sur un support défectueux d'une certaine sorte).
Eh bien, il doit d'abord se charger en mémoire. Dans la plupart des cas, cette mémoire sera toujours bonne. Dans le cas contraire , Memtest déterminera très probablement que le programme lui-même est corrompu en comparant certaines variables en place avec une somme de contrôle. Dans le cas où ils ne correspondent pas, vous sauriez instantanément que votre RAM est mauvaise ou que la copie que vous avez téléchargée est corrompue (et ce serait une tâche triviale de déterminer si cette dernière est la cause ou non).
TL, DR: Memtest86 + fonctionne uniquement en supposant que le premier mégaoctet de votre RAM est toujours correct (l'emplacement où il serait probablement chargé). En supposant que cette zone est corrompue, Memtest86 + lui-même ne fonctionnerait tout simplement pas (ce qui est un indicateur assez rapide que votre RAM est mauvaise sans même avoir exécuté les tests).
la source
Si la mémoire RAM dans laquelle l'application enregistre les variables est mauvaise, la plupart des tests échoueront.
L'algorithme écrit toutes sortes de modèles différents et vérifie ensuite s'ils sont bien écrits en les relisant, si une écriture ou une lecture ne s'est pas déroulée correctement, le test en question échouera. En exécutant la plupart des tests et en le laissant fonctionner pendant plusieurs heures, vous pouvez alors voir à quel point votre RAM est stable ...
la source