Как работают RAM Test Applications? Пример C #? - PullRequest
1 голос
/ 20 августа 2009

Как именно работают тестовые приложения для ОЗУ, и можно ли написать такое с помощью C # (Пример)?

Ответы [ 4 ]

4 голосов
/ 20 августа 2009

Большинство используют низкоуровневый аппаратный доступ для записи различных битовых шаблонов в память, а затем считывают их обратно, чтобы убедиться, что они идентичны записанному шаблону. Если нет, возможно, ОЗУ неисправно.

Как правило, они написаны на языках низкого уровня (ассемблер) для прямого доступа к ОЗУ - таким образом, любое кэширование (которое может повлиять на результат теста) исключается.

Конечно, можно написать такое приложение на C #, но это почти наверняка помешает вам получить прямой доступ к памяти на уровне битов, и, следовательно, никогда не будет таким полным и надежным, как тестеры памяти низкого уровня.

2 голосов
/ 20 августа 2009

Вы в основном пишете в ОЗУ, читаете его обратно и сравниваете с ожидаемым результатом. Возможно, вы захотите протестировать различные шаблоны для обнаружения разных ошибок (всегда-0, всегда-1) и выполнить несколько итераций для обнаружения ложных ошибок.

Вы можете делать это на любом понравившемся вам языке, если у вас есть прямой доступ к памяти, которую вы хотите проверить. Если вы хотите проверить физическую RAM, вы можете использовать P-invoke для выхода из CLR.

Однако это не решит одну конкретную проблему, если ваш компьютер основан на архитектуре Von Neumann : Программа, которая проверяет память, фактически находится в той же самой памяти. Вы должны были бы переместить программу, чтобы проверить все это. Немецкий журнал не нашел способа обойти эту проблему для своих Ramtest : они запускают тест из видеопамяти. На практике это невозможно с C #.

1 голос
/ 20 августа 2009

Как обнаружил какой-то гуру Linux, пытающийся написать программу memtest на C, любая такая программа должна быть скомпилирована для запуска на «голом» оборудовании или на ОС без MMU.

Я не думаю, что какой-либо компилятор для C # может сделать это.

0 голосов
/ 20 августа 2009

Вы, вероятно, не можете сделать так хорошо, как тестирование памяти из программы на C # в Windows, так же хорошо, как из программы на языке C или Assembly, работающей без ОС, но вы все равно можете сделать что-то полезное.

Вам нужно будет использовать собственный API-интерфейс Windows (через dllimpott и P / invoke) для выделения памяти sone и блокировки ее в оперативной памяти. Как только вы это сделаете, чтение и запись шаблонов в память довольно просты.

В конце теста вы можете сказать пользователю, какую часть его памяти вы смогли протестировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...