Операционная система Windows имеет два основных уровня: уровень ядра и пользовательский уровень. Пользовательский уровень не может непосредственно обращаться к аппаратному обеспечению и ограничен в рамках определенного адресного пространства.

Ты сможешь лишь 85%

Пользовательский уровень работает режиме 3 (наименьший приоритет). Если программа пользовательского уровня приводит к возникновению ошибки, операционная система Windows завершает выполнение программы и генерирует сообщение об ошибке. Поскольку программа работает в собственном адресном пространстве, оно не будет оказывать влияние на другие программы. В пользовательском режиме работают следующие компоненты:

  • служба регистрации;
  • подсистема безопасности;
  • программа и подсистема Win32;
  • программа и подсистема OS/2;
  • программа и подсистема POSIX.

В архитектуру Windows были внесены некоторые изменения, поскольку процессы режима ядра работают намного быстрее (режим 0). Драйвера видеоадаптеров и печати были переданы из пользовательского режима в режим ядра. Последний является привилегированным режимом центрального процессора и предоставляет непосредственный доступ к оперативной памяти и аппаратному обеспечению компьютера. Ошибки уровне ядра обычно невозможно восстановить, поэтому требуется перезагрузка компьютера.

Синий экран смерти” (BSOD) — это встроенный механизм перехвата ошибок, который используется для остановки работы всех системных, чтобы избежать повреждения системы и данных. Это означает, что драйвер печати или видеоадаптера, содержащий ошибку, может привести к аварийному завершению работы Windows. В режиме ядра работают следующие компоненты:

  • различные диспетчеры, службы управления вводом/выводом данных, объекты, модули безопасности, система IPC (interprocess communication), графическая оболочка, диалоговые окна и виртуальная память;
  • микроядро, которое предоставляет базовые функции операционной системы;
  • уровень аппаратных абстракций (HAL);
  • драйверы устройств.

Тем не менее, что за информация отображается на экране BSOD (или экране STOP)? Далее приводится основная структура информации BSOD. Реальное содержимое окна BSOD зависит от конкретной программной ошибки, поэтому некоторые из описанных разделов могут отсутствовать.

Раздел 1: индикаторы статуса порта отладки
DSR CTS SND
---------------------------------------------------------------
Раздел 2: информация об ошибке
*** STOP: 0x0000000A (0x00000002, 0x00000000, 0xDB30442D)
IRQL_NOT_LESS_OR_EQUAL *** Address db30442d has base at db300000 — matrxmil.SYS
CPUID: GenuineIntel 5.2.4 irql:if SYSVER 0xF0000565
---------------------------------------------------------------
Раздел 3: информация о драйверах
Dll Base DateStmp — Name Dll Base DateStmp — Name
80100000 2cd348a4 — ntoskrnl.exe 80400000 2cd348b2 — hal.dll
80010000 2cd348b5 — ncrc810.sys 80013000 2cda574d — SCSIPORT.SYS
и так далее...
---------------------------------------------------------------
Раздел 4: сборка ядра и дамп стека
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
и так далее...
---------------------------------------------------------------
Раздел 5: данные порта отладки
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

Раздел 1

Этот раздел отображается только в том случае, если система была запущена с параметрами /debug или /crashdebug. Для определения того, запущен ли системный отладчик, достаточно обратить внимание на меню загрузчика при загрузке Windows. Возле пункта меню запуска Windows будет отображаться строка [debugger enabled]. Для включения режима отладки с помощью параметра /debug необходимо выполнить следующие действия.

1. Поменяйте  атрибуты файла BOOT.INI:

attrib c:\boot.ini - r - s

2. Отредактируйте этот файл и в строку запуска Windows добавьте параметр /debug (для того, чтобы сообщить системе о необходимости загрузки в оперативную память отладчика ядра при загрузке Windows) или /crashdebug (чтобы система загрузила отладчик, однако записала его выходные данные в файле подкачки). Дополнительными параметрами являются /Debugport, сообщающий системе, какой порт COM необходимо использовать (по умолчанию 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 означает, что данные передаются на последовательный порт).

Раздел 2

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

Например, значение BugCheck, равное 0x00000077 или 0x0000007A, означает, что содержимое файла подкачки не может быть загружено в память. Второе шестнадцатеричное значение поможет диагностировать причину возникновения проблемы. Возможные значения приводятся далее.

Значения BugCheck

0xC000009A Ошибка STATUS_INSUFFICIENT_RESOURCES, вызывается недостатком невыгружаемого пула
0xC000009A Ошибка STATUS_DEVICE_DATA_ERROR, обычно вызывается сбойным блоком на жестком диске
0xC000009D Ошибка STATUS_DEVICE_NOT_CONNECTED, вызывается испорченным, неплотно прилегающим кабелем или терминатором; может вызываться тем, что контроллер не обнаруживает диск
0xC000016A Ошибка STATUS_DISK_OPERATION_FAILED, вызывается сбойным блоком на диске
0xC0000185 Ошибка STATUS_IO_DEVICE_ERROR, вызывается неправильной установкой терминаторов или кабелей на устройствах SCSI

Раздел 3

В этом разделе перечислены все драйвера, которые были загружены в момент аварийного завершения работы. Раздел разделен на две области, в каждой из который указывается три столбца. Первый столбец является временным штампом (в секундах с 1-го января 1970 гг.). Это значение может быть преобразовано в действительное время с помощью утилиты CVTIME.EXE (в свое время в операционной системе VMS для этого использовалась утилита f$cvtime).

Раздел 4

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

Раздел 5

Содержимое раздела зависит от наличия параметра /debug. Впрочем, в разделе содержится лишь информация о необходимости обращения к администратору/службе поддержки и о том, создан ли файл .DMP.

Кому нужна эта Винда? Нам нужны бабки за 180 секунд!

1 Comment

    Олег (Kolombo98)

    09 Mar 2016

    Привет! :)

    ПОЖАЛУЙСТА, подскажите:

    А в моём Случае Синий Экран Смерти содержал КОД такой вот Ошибки в своём Логе (сфотографировал Его Мобильным, а потом переписал…):

    *** STOP: 0x00000019 (0x0000000000000003, 0xFFFFF8000360E6E0x000000000011DD41. 0xFFFFF8000360E6E0) ***

    А потом ещё сам 7-мой Windows подтвердил… (да, это случилось на 7-ке) – когда смог всё-таки, после Неопределённых Манипуляций…, вновь запустить Систему – и Он, Windows тут же при Входе представил свой Отчёт об Ошибке! Ну и собственно вот, что Он написал в Нём:

    ***
    Windows Восстановлен после Непредвиденного Завершения Работы!
    – Подробности проблемы:

    Сигнатура проблемы:
    Имя События проблемы: BlueScreen
    Версия ОС: 6.1.7601.2.1.0.256.1
    Код языка: 1049

    Дополнительные Сведения об этой проблеме:
    BCCode: 19
    BCP1: 0000000000000003
    BCP2: FFFFF8000360E6E0
    BCP3: 000000000011DD41
    BCP4: FFFFF8000360E6E0
    OS Version: 6_1_7601
    Service Pack: 1_0
    Product: 256_1

    Файлы, содержащие Сведения об этой проблеме:
    C:\Windows\Minidump30716-32276-01.dmp
    D:\Temp\WER-2034393-0.sysdata.xml
    ….
    ***

    – В чём же заключена проблема-то, где её искать заразу такую, что необходимо (уже) менять…, чтобы устранить её?

    – Подскажите, ПОЖАЛУЙСТА!
    Чувствую, что она перманентная у меня….

    …Заранее:
    – СПАСИБО! :)
    …ЖДУ!

    Всего ХОРОШЕГО…! ;)

Leave a Reply

Your email address will not be published. Required fields are marked *