17

Я читал еще один вопрос о Memtest и начал задаваться вопросом: как Memtest86 работает с плохой RAM?

Подумайте об этом: Memtest86 должен хранить информацию о том, какой объем ОЗУ, что он поместил в ОЗУ для последующего сравнения, где обновлять экран и многое другое. Использование переменной требует, чтобы ОЗУ функционировало должным образом. Но как вы можете получить надежные результаты, когда вы запускаете программу, возможно, с дефектом оперативной памяти?

Аналогия с этим - запуск программы проверки жесткого диска с жесткого диска, который вы проверяете. Вы бы никогда этого не сделали, плохой блок может повлиять на программу многими неожиданными способами.

Как Memtest86 работает с плохой оперативной памятью?

6 ответов6

9

Главным образом потому, что количество оперативной памяти, которое требуется для загрузки memtest, чрезвычайно мало. Если программа запускается, вероятно, что память в этой области в порядке.

Вероятность того, что

  1. Небольшой раздел памяти Memtest был загружен в плохо.
  2. Это было все еще достаточно хорошо, чтобы он мог успешно завершить все тесты без заметных проблем.

Очень маловероятно.

7

Memtest довольно долговечен в том смысле, что он не зависит от оперативной памяти, которую он тестирует.

Например, тест 0 использует алгоритм « ходячих» , и для этого теста требуется только один указатель (вероятно, кэшированный), поскольку он сравнивает только два последовательных адреса памяти.

Так что, если у нас есть 3-битная RAM-карта, memtest загружает ее так:

<pointer location> 00000001 00000010 00000100 00001000 00010000 00100000 01000000

И если первый адрес поврежден, он будет сравнивать два случайных местоположения:

00000001 00100000

И все равно не получится, даже если переменные memtest повреждены.

3

Memtest обязательно должна сделать хотя бы одно предположение, что хотя бы память, в которую она сама загружена, хороша. После этого он может сканировать и тестировать оставшуюся часть памяти полностью.

Может случиться так, что он все еще способен считывать и обнаруживать ошибки в своей собственной памяти, поскольку, будучи единственной загруженной программой, он должен иметь доступ практически ко всей памяти в системе и, таким образом, иметь возможность читать и сравнивать эту память с "известный хороший" образец.

1

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

1

Подумайте об этом: Memtest86 должен хранить информацию о том, какой объем ОЗУ, что он поместил в ОЗУ для последующего сравнения, где обновлять экран и многое другое. Использование переменной требует, чтобы ОЗУ функционировало должным образом. Но как вы можете получить надежные результаты, когда вы запускаете программу, возможно, с дефектом оперативной памяти?

Ну, это то, что делает Memtest - он записывает различные (известные) шаблоны в вашу оперативную память, считывает их обратно и сравнивает. Если есть несоответствие, ваша RAM должна быть повреждена.

Аналогия с этим - запуск программы проверки жесткого диска с жесткого диска, который вы проверяете. Вы бы никогда этого не сделали, плохой блок может повлиять на программу многими неожиданными способами.

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

Как Memtest86 работает с плохой оперативной памятью?

Ну, сначала он должен загрузить себя в память. В большинстве случаев эта память все равно будет хорошей. Если это не так, Memtest, скорее всего, определит, что сама программа повреждена, сравнив некоторые переменные на месте с контрольной суммой. В случае, если они не совпадают, вы сразу узнаете, что у вас плохая оперативная память или поврежденная загруженная копия (и было бы тривиальной задачей определить, является ли последняя причиной или нет).


TL, DR: Memtest86+ работает только при условии, что первый мегабайт вашей оперативной памяти все еще в порядке (место, где она будет загружена, скорее всего). Предполагая, что эта область повреждена, сам Memtest86+ просто не будет функционировать (что является довольно быстрым показателем того, что ваша ОЗУ плоха даже без запуска тестов).

0

Если оперативная память, в которой приложение сохраняет переменные, плохая, то большинство тестов не пройдут.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .