Чаще всего память служит причиной следующих ошибок:
■ ошибки четности, генерируемые системной платой;
■ ошибки типа general protection fault, вызванные повреждением данных запущенной программы в памяти, что приводит к остановке приложения;
■ ошибки типа fatal exception, возникающие при выполнении программой недопустимых инструкций;
■ ошибки деления, вызванные попыткой деления на нуль, которая приводит к ошибке записи результата в регистр памяти.
Некоторые из приведенных типов ошибок являются аппаратными (сбои в цепи питания, статические заряды и т.д.), а некоторые — программными (некорректно написанные драйверы устройств, ошибки в программах и т.д.).
Если причиной возникновения ошибок определенно является оперативная память, следует воспользоваться помощью либо одной программы тестирования, либо нескольких диагностических приложений.
Многие допускают существенную ошибку в применении диагностических программ, например проводят диагностику с включенным системным кэшированием. Это затрудняет тестирование, поскольку в большинстве систем используется так называемый кэш с обратной записью. Принцип его работы в том, что данные, записанные в основную память, в первую очередь записываются в кэш. Поскольку диагностическая программа изначально записывает данные и затем сразу же их считывает, данные считываются с кэша, а не из основной памяти. При этом тестирование проводится очень быстро, но проверке подвергается лишь сам кэш. Таким образом, обязательно отключайте кэширование перед тестированием оперативной памяти. При этом компьютер будет работать довольно медленно и диагностика займет на порядок больше времени, однако проверяться будет память RAM, а не кэш.
При проверке памяти придерживайтесь алгоритма, приведенного на рис. 6.13.
Рис. 6.13. Последовательность тестирования и устранения проблем с памятью
Теперь познакомимся с процедурой проверки и устранения ошибок памяти.
1. Включите систему и проследите за выполнением процедуры POST (Power-On Self Test). Если POST завершается без ошибок, следовательно, основные параметры памяти проверены. При появлении ошибок следует перейти к выполнению процедур локализации дефектов.
2. Перезапустите систему и войдите в программу BIOS (или CMOS) Setup. Для этого во время выполнения POST (но до начала процесса загрузки) нажмите клавишу <F2>. Проверьте в параметрах BIOS Setup, совпадает ли объем обнаруженной и установленной памяти. В том случае, если вычисленный объем памяти не соответствует установленному, обратитесь к процедуре локализации дефектов.
3. В программе BIOS Setup отключите параметры кэширования. Сохраните выполненные изменения и загрузите компьютер с отформатированной системной дискеты, содержащей выбранные диагностические программы. Существует целый ряд диагностических программ, которыми можно воспользоваться: PC-Technician от Windsor Technologies, Norton Utilities компании Symantec и т.п.
4. Следуя инструкциям, появляющимся при выполнении диагностической программы, протестируйте основную и дополнительную (XMS) память. Обычно в таких программах существует специальный режим, допускающий непрерывное циклическое выполнение диагностических процедур. Это позволяет обнаружить перемежающиеся (периодические) ошибки. При выявлении ошибок памяти, перейдите к выполнению процедуры локализации дефектов.