2009-08-20 7 views
1

Comment les applications de test de RAM fonctionnent-elles exactement, et est-il possible d'écrire en utilisant C# (Exemple)?Comment fonctionnent les applications de test de RAM? C# Exemple?

+5

Vous ne pouviez pas écrire une application de test de RAM dans un langage .NET tel que C#. Vous devriez voir les choses au niveau de la machine et la machine virtuelle obscurcit cette information. – user142350

Répondre

2

Vous écrivez essentiellement dans la RAM, relisez-la et comparez cela avec le résultat attendu. Vous pouvez tester différents modèles pour détecter différentes erreurs (toujours-0, toujours-1) et exécuter plusieurs itérations pour détecter les erreurs non essentielles.

Vous pouvez le faire dans n'importe quelle langue, tant que vous avez un accès direct à la mémoire que vous souhaitez tester. Si vous voulez tester la RAM physique, vous pouvez utiliser P-invoke pour atteindre le CLR. Cependant, ceci ne résoudra pas un problème spécifique si votre ordinateur est basé sur le Von Neumann architecture: Le programme qui teste la mémoire se trouve réellement dans la même mémoire. Vous devrez déplacer le programme pour tester tout cela. Le magazine allemand a trouvé un moyen de contourner ce problème pour leur Ramtest: Ils exécutent le test de la mémoire vidéo. En pratique, c'est impossible avec C#.

+0

Il est possible d'exécuter le programme à partir du cache de l'UC (avec quelques tours) et de tester la DRAM. –

4

La plupart utilisent un accès matériel de bas niveau pour écrire divers modèles de bits en mémoire, puis les relire pour s'assurer qu'ils sont identiques au modèle écrit. Sinon, la RAM est probablement défectueuse.

Ils sont généralement écrits dans des langages de bas niveau (assembleur) pour accéder directement à la RAM - de cette façon, toute mise en cache (qui pourrait affecter le résultat du test) est évitée. Il est certainement possible d'écrire une telle application en C# - mais cela vous empêcherait presque certainement d'accéder directement à la mémoire, et ne pourrait donc jamais être aussi complet et fiable que les testeurs de mémoire de bas niveau.

1

Comme l'a découvert un gourou Linux essayant d'écrire un programme memtest en C, un tel programme doit être compilé pour fonctionner sur un matériel nu ou un système d'exploitation sans MMU pour être efficace.

Je ne pense pas que n'importe quel compilateur pour C# puisse le faire.

0

Vous ne pouvez probablement pas faire aussi bien d'une tâche de test de mémoire à partir d'un programme C# dans Windows que vous pourriez partir d'un programme en langage C ou assembleur fonctionnant sans système d'exploitation, mais vous pouvez toujours faire quelque chose d'utile.

Vous aurez besoin d'utiliser l'API Windows natif (via dllimpott et P/invoke) pour allouer de la mémoire sone et le verrouiller dans la RAM. Une fois que vous avez fait cela, lire et écrire des modèles dans la mémoire est assez facile.

À la fin du test, vous pouvez indiquer à l'utilisateur la quantité de mémoire que vous avez pu tester.

Questions connexes