Ошибка PAGE_FAULT_IN_NONPAGED_AREA¶
PAGE_FAULT_IN_NONPAGED_AREA — код остановки (stop-код) операционной системы Microsoft Windows, обозначающий ситуацию, когда система обратилась к странице памяти, которая должна находиться в оперативной памяти (в несвопаемой, nonpaged, области), однако эта страница оказалась недоступной. Ошибка сопровождается синим экраном смерти (BSOD) и аварийной перезагрузкой компьютера.
¶Природа ошибки
В Windows управление памятью осуществляется с помощью системы виртуальной памяти. Адресное пространство процессов разбито на страницы фиксированного размера (обычно 4 КБ). Страницы могут находиться в оперативной памяти либо быть выгруженными в файл подкачки (pagefile.sys). Когда процесс обращается к странице, отсутствующей в ОЗУ, контроллер памяти вызывает так называемую страницную ошибку (page fault) — это нормальное и штатное событие, после которого система подгружает нужную страницу из файла подкачки или диска.
Однако часть ядра Windows использует несвопаемую память (nonpaged pool) — область, страницы которой никогда не выгружаются на диск и должны всегда присутствовать в ОЗУ. Если ядро или драйвер обращается к адресу в несвопаемой области, а соответствующая страница физически недоступна, контроллер памяти не может обработать запрос штатным способом. В этом случае ядро Windows вызывает исключение и останавливает систему с кодом 0x00000050 (PAGE_FAULT_IN_NONPAGED_AREA).
¶Основные причины
Наиболее частые причины появления ошибки:
- Проблемы с оперативной памятью. Дефектные модули ОЗУ, ошибки в микросхемах, нестабильность при разгоне — наиболее распространённый источник. Повреждённый бит в RAM приводит к тому, что данные, записанные в несвопаемую область, при чтении оказываются некорректными.
- Сбойные драйверы. Драйвер, написанный с ошибкой или повреждённый, может обратиться к несвопаемому адресу, который не был корректно выделен. Классический пример — драйверы антивирусов, эмуляторов дисков, виртуализаторов, устаревшие драйверы видеокарт и сетевых адаптеров.
- Повреждённые системные файлы. Сбой компонентов ядра Windows, повреждение образа системы в результате сбоя электропитания, вредоносного воздействия или ошибок на диске.
- Проблемы с диском. Ошибки в файловой системе, секторы на жёстком диске (HDD/SSD), из-за которых данные не могут быть корректно прочитаны или записаны.
- Нестабильное оборудование. Разгон процессора, неисправный блок питания, перегрев, несовместимые модули памяти.
¶Диагностика
Для определения причины сбоя используются следующие средства:
- Дампы памяти. При BSOD Windows записывает дамп памяти (memory dump) в файл C:\Windows\MEMORY.DMP или мини-дампы в папку C:\Windows\Minidump. Анализ дампа с помощью утилит WinDbg или BlueScreenView позволяет определить модуль (драйвер), на момент сбоя обращавшийся к недоступной странице.
- Проверка оперативной памяти. Встроенная утилита Windows «Средство проверки памяти Windows» (mdsched.exe) выполняет тест модулей ОЗУ. Дополнительно рекомендуется запуск стресс-тестов MemTest86, который проверяет память более тщательно.
- Проверка целостности системных файлов. Команда
sfc /scannowзапускает проверку и восстановление защищённых системных файлов. Утилита DISM (DISM /Online /Cleanup-Image /RestoreHealth) восстанавливает компонентный магазин Windows. - Проверка диска. Команда
chkdsk C: /f /rпроверяет файловую систему и ищет повреждённые сектора. - Просмотр журнала событий. В «Просмотре событий» (eventvwr.msc) в журналах «Система» и «Приложения» можно найти записи о сбоях драйверов и компонентов, предшествовавшие BSOD.
¶Методы устранения
Последовательность действий при устранении ошибки обычно включает:
- Проверку оперативной памяти стресс-тестом (MemTest86, не менее 2–3 полных проходов). При обнаружении ошибок дефектные модули заменяются. Если разгон применялся — его отключают, возвращая частоты и тайминги к штатным значениям.
- Обновление или переустановку драйверов. Устанавливаются актуальные версии драйверов видеокарты, чипсета, сетевого адаптера, звуковой карты. Подозрительные драйверы (виртуализаторы, эмуляторы, утилиты «оптимизации») временно удаляются.
- Восстановление системных файлов с помощью sfc и DISM.
- Проверку диска утилитой chkdsk.
- Откат последних изменений. Если ошибка появилась после установки нового программного обеспечения или обновления Windows, выполняется откат через точку восстановления или удаление подозрительного ПО.
- Проверку температурного режима и блока питания. Перегрев и просадки напряжения могут вызывать ошибки чтения памяти.
¶Связанные коды остановки
С ошибкой PAGE_FAULT_IN_NONPAGED_AREA тесно связаны другие stop-коды, указывающие на дефекты памяти:
| Код | Название | Описание |
|---|---|---|
| 0x0000001A | MEMORY_MANAGEMENT | Ошибка управления памятью ядра |
| 0x0000000A | IRQL_NOT_LESS_OR_EQUAL | Обращение к памяти с недопустимым уровнем прерываний |
| 0x0000007E | SYSTEM_THREAD_EXCEPTION_NOT_HANDLED | Исключение в системном потоке, часто из-за драйвера |
| 0x000000D1 | DRIVER_IRQL_NOT_LESS_OR_EQUAL | Драйвер обратился к памяти с неверным IRQL |
| 0x0000009C | MACHINE_CHECK_EXCEPTION | Аппаратная ошибка процессора |
Частое появление любых из перечисленных кодов в сочетании с PAGE_FAULT_IN_NONPAGED_AREA указывает преимущественно на аппаратную проблему с оперативной памятью или процессором.
Источники:
- Документация Microsoft Learn: «Bug check code reference»
- Документация Microsoft Learn: «Overview of memory management in Windows»
- BlueScreenView, NirSoft — утилита анализа дампов BSOD
- MemTest86, Passmark Software — средство тестирования оперативной памяти
