Windows 95/98/NT FAQ

Какая информация отображается на Синем Экране Смерти (Blue Screen of Death (BSOD))?


    Операционная система NT имеет два основных режима: user mode (пользовательский режим) и kernel mode (режим ядра). Пользовательский режим не имеет прямого доступа к железу, ограничен назначенным адресным пространством и действует на уровне Ring 3 (низкий приоритет). Если программа пользовательского режима рушится, NT останавливает ее и генерирует сообщение об ошибке, а т.к. программа выполняется в ограниченном адресном пространстве, то это не приводит к фатальному краху системы и не оказывает влияния на другие программы. Общие компоненты, выполняемые в пользовательском режиме

NT 4.0 имеет несколько измененную архитектуру, чем ранние версии NT. Например, процессы в режиме ядра выполняются намного быстрее (Ring 0), Video и Printer драйвера были перемещены из пользовательского режима в режим ядра. Режим ядра - это привилегированный режим использования процессора, позволяет прямой доступ к памяти и аппаратным средствам. Ошибки режима ядра обычно невосстановимы и требуют перезагрузки системы. BSOD - это встроенный механизм перехвата ошибок которые могут повредить систему или данные. Т.е. неисправные драйвера graphics/print могли бы разрушить NT. Компоненты, выполняемые в режиме ядра:

Так что же показывает BSOD?  Ниже приведена основная структура BSOD, она может отличаться от того, что Вы увидите у себя (может быть гораздо меньше разделов). Почему, объяснено ниже.

--------------------------------------------------
Section 1: Debug Port Status Indicators (Индикаторы состояния порта отладки)
DSR CTS SND
--------------------------------------------------
Section 2: BugCheck Information
*** STOP (ОСТАНОВ): 0x0000000A (0x00000002,0x00000000,0xDB30442D)
IRQL_NOT_LESS_OR_EQUAL *** Address db30442d has base at db300000 - matrxmil.SYS

CPUID: GenuineIntel 5.2.4 irql:1f SYSVER 0xF0000565
--------------------------------------------------
Section 3: Driver Information (Информация о драйверах)

Dll Base DateStmp - Name Dll Base DateStmp - Name
80100000 2cd348a4 - ntoskrnl.exe 80400000 2cd348b2 - hal.dll
80010000 2cd348b5 - ncrc810.sys 80013000 2cda574d - SCSIPORT.SYS

и т.д...
--------------------------------------------------
Section 4: Kernel Build and Stack Dump
Address dword dump Build [1381] -Name
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx - matrxmil.SYS
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx - ntoskrnl.exe
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx - ntoskrnl.exe
etc..
--------------------------------------------------
Section 5: Debug Port Information (Информация порта отладки)
Restart and set the recovery options in the system control panel
or the /CRASHDEBUG system start option if this message reappears,
contact your system administrator or technical support group

Или если система запущена с ключами /debug или /crashdebug:

Kernel Debugger Using : Com2 (Port 0x2f8, Baud Rate 9600)
Beginning Dump of physical memory
Physical memory dump complete. Contact your system administrator or
technical support group

Section 1: Этот раздел виден только, когда система запускается с ключами /debug или /crashdebug и сообщает о том, что система в режиме отладки. Для того, чтобы узнать, включен ли режим отладки, загляните в файл boot.ini Для включения режима /debug следуйте приведенной ниже инструкции:

  1. Измените атрибуты файла boot.ini для возможности редактирования
    attrib c:\boot.ini -r -s
  2. Откройте файл для редактирования и включите в стартовую строку параметр /debug (для загрузки отладчика ядра в память) или /crashdebug (для загрузки отладчика и размещения его в свопе). Другие опции: /Debugport - какой порт использовать (по умолчанию COM2) и /Baudrate - скорость порта (по умолчанию 19200, но лучше 9600) , например:
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(0)\WINDOWS="Windows NT" /debug /debugport=com3 /baudrate=9600
  3. Сохраните файл.
  4. Установите для файла boot.ini предыдущие атрибуты:
    attrib c:\boot.ini +r +s

Трехзначные сокращения, такие как RTS - Ready to Send (Готовность к передаче), DSR Data Send Ready (Готовность к передаче данных), CTS Clear to Send, и SND означают, что данные переданы в COM порт

Section 2: Эта секция содержит коды ошибок (или BugCheck), содержащий четыре установленных разработчиками параметра (определенные вызовом функции "KeBugCheckEx()"). В нашем случае BugCheck был 0x0000000A IRQL_NOT_LESS_OR_EQUAL , что означает, что процесс попытался получить доступ к страничной памяти на более высоком уровне, чем тот, который обычно используется драйверами устройств.

Например, BugCheck of 0x00000077 или 0x0000007A означает, что данные из свопа не могут быть загружены в оперативную память. Следующие шестнадцатеричные значения помогут вам определить причину краха:

0xC000009A STATUS_INSUFFICIENT_RESOURCES, вызвана недостатком системных ресурсов.
0xC000009C STATUS_DEVICE_DATA_ERROR, вызвана наличием сбойных секторов на винчестере
0xC000009D STATUS_DEVICE_NOT_CONNECTED, вызван плохим контактом или обрывом кабелей, что приводит к "потере" диска.
0xC000016A STATUS_DISK_OPERATION_FAILED, тоже вызван наличием сбойных секторов
0xC0000185 STATUS_IO_DEVICE_ERROR, вызван плохим контактом или обрывом кабелей SCSI устройств.

Полный список кодов: http://support.microsoft.com/support/kb/articles/q103/0/59.asp

Section 3: Содержит список всех драйверов, находящихся в памяти в момента краха. Разделен на две половины с тремя столбцами. Первая колонка содержит временную метку (в секундах, с 1970 года), которая может быть переведена в реальное время при помощи утилиты cvtime.exe

Section 4: Показывается номер билда Операционной системы и дамп стека, который содержит адрес использованный рухнувшим модулем.

Section 5: В зависимости от того, включен ли режим /debug, но в основном просто показывает установки режима связи и/или создание .dmp файла.


На первую страницу    Раздел Windows NT    Назад

Copyright © 2000. Andrey Harchenko. При перепечатке ссылка на http://WinFAQ.com.ru обязательна.
Авторские права на оригиналы статей: Microsoft Corporation, SavillTech Ltd, Simon Clausen