Як працює Memtest86 при поганій оперативній пам’яті?


17

Я читав ще одне запитання про Memtest і почав цікавитися: як функціонує Memtest86 з поганою оперативною пам’яттю?

Подумайте над цим: Memtest86 потрібно зберігати інформацію про те, наскільки велика оперативна пам’ять, що вона вводить в оперативну пам'ять, щоб порівняти пізніше, де оновити екран, і багато іншого. Акт використання змінної вимагає належної роботи ОЗУ. Але як можна отримати надійні результати при запуску програми на можливо несправній ОЗУ?

Аналогією цьому є запуск програми перевірки жорсткого диска з жорсткого диска, на який перевіряється. Ви ніколи цього не зробите, поганий блок може вплинути на програму безліччю несподіваних способів

Як працює Memtest86 при поганій оперативній пам’яті?


2
FYI, вся робота, виконана процесором, виконується в оперативній пам'яті. Коли програма виконується в оперативній пам'яті, вона не має нічого спільного зі змінними. Ви можете написати програму, яка не робить нічого, і ніколи не використовує змінних, але ця програма знаходиться в пам'яті. Дуже цікаве запитання, хоча.
Keltari

2
Оскільки всі (нетривіальні) програми використовують змінні, фокус для тестерів / тренажерів пам'яті полягає в тому, щоб зберігати їх змінні в регістрах, а не в пам'яті. Це також означає відсутність стека! Деякі програми пам'яті виконуються з ПЗУ (наприклад, Гарвардська архітектура), або, якщо вони перебувають у тестовій оперативній пам'яті, переміщують код після кожного проходу. Успіх чи невиконання програми тестування в різних місцях оперативної пам’яті було частиною тренера. Звичайно, напевно є погано написані тестери пам'яті, які використовують оперативну пам’ять під тестом, як звичайну програму
тирса

@Keltari технічно частини BIOS закінчуються прямо з спалаху NOR ....
rackandboneman

Відповіді:


9

Переважно тому, що кількість оперативної пам'яті, яка потрібна для завантаження пам’яті, надзвичайно мала. Якщо програма запускається, ймовірно, що пам'ять у цій одній області в порядку.

Шанс, що-

  1. Невеликий розділ пам’яті пам'яті був завантажений погано.
  2. Це все ще було досить добре, що він зміг успішно виконати всі тести без помітних проблем.

Це -високо- малоймовірно.


7

Memtest досить довговічний тим, що він насправді не залежить від оперативної пам’яті, яку він тестує.

Наприклад, тест 0 використовує алгоритм крокуючих , і все, що потрібно для цього тесту, - це один вказівник (можливо, кешований), оскільки він порівнює лише дві послідовні адреси пам'яті.

Отже, якщо у нас є 3-бітна оперативна пам’ять, memtest завантажує її таким чином:

<pointer location> 00000001 00000010 00000100 00001000 00010000 00100000 01000000

І якщо перша адреса пошкоджена, вона порівняє два випадкові місця:

00000001 00100000

І вона все одно не вийде, навіть якщо змінні memtest будуть пошкоджені.


3

Memtest абсолютно повинен зробити хоча б одне припущення, що принаймні пам'ять, в яку він сам завантажений, є доброю. Після цього він зможе відсканувати і протестувати решту пам'яті в повному обсязі.

Можливо, він все ще може читати та виявляти помилки у власній пам’яті, оскільки, будучи єдиною завантаженою програмою, він повинен мати доступ до практично всієї пам’яті в системі, і таким чином мати можливість читати та порівнювати цю пам'ять із a "відомий добрий" зразок.


Я в основному думав про зміни в поведінці поганої оперативної пам’яті. Наприклад, якщо поганий баран змінив логіку, щоб усі тести завжди виявлялися правдивими.
TheLQ

Я б сказав, що можливо, що один біт фліп міг зробити помилкове зчитування як істинне під час тестування, але більш імовірно, що біт, який перевертається, буде в чомусь більш критичному, в Memtest я б очікував розміру фактичного запуску код буде більшим, ніж "тестові випадки", і тому я б очікував, що невелика помилка призведе до того, що програма жахливо вийде з ладу, перш ніж вона виявить пропуск замість відмови. Я все-таки визнаю, що це є можливість.
Мокубай

1

Будучи маленьким. Якщо деяка оперативна пам’ять погана, чим менше програма, тим менше ймовірність того, що якась частина програми опиниться в одному з поганих місць. Враховуючи, що завантаження достатньо далеко для завантаження тесту пам’яті передбачає деякий код вбудованого програмного забезпечення за допомогою оперативної пам’яті, шанси полягають у тому, що якщо вам вдасться доїхати так далеко, низькі області оперативної пам’яті працюють досить добре, що пам’ятка зможе запустити з них.


1

Подумайте над цим: Memtest86 потрібно зберігати інформацію про те, наскільки велика оперативна пам’ять, що вона вводить в оперативну пам'ять, щоб порівняти пізніше, де оновити екран, і багато іншого. Акт використання змінної вимагає належної роботи ОЗУ. Але як можна отримати надійні результати при запуску програми на можливо несправній ОЗУ?

Ну, це робить Memtest - він записує різні (відомі) зразки у вашу ОЗУ, читає їх назад і порівнює. Якщо відбувається невідповідність, оперативна пам’ять повинна бути пошкоджена.

Аналогією цьому є запуск програми перевірки жорсткого диска з жорсткого диска, на який перевіряється. Ви ніколи цього не зробите, поганий блок може вплинути на програму безліччю несподіваних способів

Хоча це правда, є деякі випадки, коли у вас немає вибору. Поки ви можете успішно завантажити програму, вона повинна мати можливість виконувати її діагностичні завдання (навіть якщо вона працює на якомусь несправному носії).

Як працює Memtest86 при поганій оперативній пам’яті?

Ну, спочатку треба завантажити себе в пам'ять. У більшості випадків ця пам’ять все одно буде хорошою. У випадку, якщо його немає , Memtest, швидше за все, визначить, що сама програма пошкоджена шляхом порівняння деяких змінних на місці з контрольною сумою. У випадку, якщо вони не збігаються, ви одразу знаєте, що або ваша оперативна пам’ять погана, або завантажена вами копія (це було б тривіальним завданням визначити, чи є останнім причиною чи ні).


TL, DR: Memtest86 + працює лише за умови, що перший мегабайт оперативної пам’яті все ще добре (місце, де воно буде завантажено, швидше за все). Якщо припустити, що ця область пошкоджена, сам Memtest86 + просто не функціонує (що є досить швидким показником, що ваша ОЗУ погана, навіть не запускаючи тести).


0

Якщо оперативна пам’ять програма зберігає змінні до поганої, то більшість тестів не вдасться.

Алгоритм записує всілякі різні шаблони, а потім перевіряє, чи добре вони написані, читаючи їх знову, якщо запис чи читання не вийшли правильно, це зробить тест, про який йдеться, не вдалося. Запустивши більшість тестів і давши йому працювати протягом декількох годин, ви зможете зрозуміти, наскільки стабільна ваша оперативна пам'ять ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.