BSOD

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Синій екран смерті)
Перейти до навігації Перейти до пошуку
Синій екран смерті у Windows 95

Синій екран смерті (англ. Blue Screen of Death, BSoD) — назва повідомлення про критичну помилку операційної системи Microsoft Windows або ReactOS. Оскільки після появи цього повідомлення майже неможливо відновити нормальну працездатність системи, вона, як правило, передує перезавантаженню. Синій екран смерті вперше з'явився у Windows NT версії 3.1.

Існує два види повідомлень BSOD: для сімейства Microsoft Windows 95/98/Me і для сімейства Microsoft Windows NT/2000/XP/2003.

Термін Blue Screen of Death був запропонований Еріком Нойсом (англ. Erik Noyes) 1991 року під час роботи в службі підтримки електронної служби доставки компанії Charles Schwab and Co., Inc.

Синій екран смерті часто стає темою жартів і негативних зауважень щодо систем Microsoft Windows у середовищі комп'ютерників. Наприклад, робітники фірми Winternals створили нетипову заставку «BlueScreen Screen Saver».

Історія[ред. | ред. код]

BSoDs були присутні в Windows NT 3.1 (перша версія сімейства Windows NT, випущена в 1993 році) та у всіх операційних системах Windows, випущених після цього. BSODs може бути викликаний погано написаними драйверами пристроїв або несправностями апаратних засобів, такі як несправна пам'ять, проблеми з живленням, перегрів компонентів або апаратним забезпеченням, яке працює за межами специфікацій. В епоху Windows 9x, несумісні DLL або помилки в ядрі операційної системи могли також викликати BSoD. Через нестабільність та відсутність захисту пам'яті в Windows 9x, BSoDs були набагато більш поширеними.

Формати[ред. | ред. код]

До Windows 8 і Windows Server 2012, BSoD показували сріблястий текст на королівському синьому фоні з інформацією про поточні значення пам'яті та значеннях регістрів. Windows Server 2012, Windows 8 і Windows 10 використовують замість цього світліший синій фон.

У Windows 95, 98 і ME BSoD використовує текстовий режим 80 × 25. BSoD в сімействі Windows NT вживають текстовий режим 80 × 50 на екрані 720 × 400. У Windows XP BSoD використовується шрифт Lucida Console, а в Windows Vista і 7 BSoD використовується шрифт Consolas. Windows 8, Windows Server 2012 вживають призначений для користувача інтерфейс Segoe і намагаються відображати BSoD з власним дозволом, в іншому випадку за замовчуванням використовується значення 640x480. Windows 10 використовує той же формат, що і Windows 8, але має QR-код, який приводить до опитування Microsoft в тому, як з'явився синій екран.

Попри назву «синій екран», у Windows 9x колір повідомлення може бути налаштований користувачем. Станом на грудень 2016 року збірки Windows 10 для Windows Insider мають той же формат, що і в загальнодоступних версіях, але з зеленим фоном замість синього.

Windows NT[ред. | ред. код]

Для цих версій Windows синій екран смерті з'являється, коли в коді ядра або драйвера, що виконується в режимі ядра або в важливих для системи процесах, які працюють в режимі користувача (winlogon.exe, csrss.exe), виникає невиправна помилка. Єдиною можливою дією в цьому випадку є перезавантаження комп'ютера (при цьому користувач втрачає всі незбережені дані). За замовчуванням таке перезавантаження відбувається автоматично. Після цього операційна система створює в системному журналі запис з параметрами, що викликали помилки. Якщо в налаштуваннях ОС включено створення дампів пам'яті, то в системному журналі буде вказано шлях до файлу з розширенням .dmp. Він може бути використаний розробниками програм і драйверів для більш детального визначення причин помилки (за допомогою Microsoft Debugging Tools).

В рамках Windows Resource Kit сині екрани смерті називаються стоп-помилками (англ. Stop error); в SDK і DDK вони називаються bug check screens або Stop screens.

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

Вміст тексту на екрані:

  • код помилки (Stop-код) і її символьне ім'я (наприклад, 0x0000001E, KMODE_EXCEPTION_NOT_HANDLED);
  • 4 параметри, що пояснюють помилку, призначені для налагоджувального ПО (значення параметрів залежить від коду помилки). Також можна самому отримати інформацію, яка пояснює помилку, за допомогою командного рядка і команди net helpmsg;
  • адрес місця помилки (якщо його можливо вказати);
  • назва драйвера, в якому сталася помилка (якщо його можливо вказати).

Ядро NT надає функції KeBugCheck і KeBugCheckEx, які показують синій екран смерті, зупиняючи роботу системи. Обидві функції приймають Stop-код, друга дозволяє також вказати згадані раніше чотири додаткових параметри.

Дизайн[ред. | ред. код]

У Windows NT 3.1 — 4.0 на синьому екрані показували більшість драйверів, які використовувалися в момент фатальної помилки. Вгорі відображався код помилки.

У Winodws 2000 текст екрана зазнав значних змін: список драйверів був прибраний (Windows 2000 розраховувалася на рядового користувача), в текст були внесені рекомендації для користувачів. У Windows XP код помилки був переміщений вниз, став використовуватися шрифт Lucida Console, в пізніх версіях використовувався шрифт Consolas.

Нова версія екрана з помилкою була помічена розробником після попереднього перегляду Windows 8, випущеного у вересні 2011 року. Замість відображення детальної технічної інформації про помилку, використаний спрощений для користувачів підхід, при якому відображається сумний смайлик і повідомлення про необхідність перезавантаження комп'ютера. Це було зроблено з міркувань, що багато користувачів не вдадуться в опис помилки, а просто натискають кнопки Power Off або Reset, намагаючись виправити проблему. Сама причина цієї проблеми відображається нижче. Також такий варіант екрана з помилкою, можливо, не так лякає людей, які бачать «екран смерті».

В одному з оновлень для Windows 10 на екран був доданий QR-код, який при скануванні направляв на сайт Майкрософт з інформацією про помилку. В одній з попередніх збірок Windows 10 від грудня 2016 роки замість синього мав місце «зелений екран смерті».

Ручний виклик «Екрану смерті»[ред. | ред. код]

Операційні системи сімейства Windows NT, починаючи з Windows 2000, дають користувачеві можливість вручну викликати «синій екран смерті». Щоб включити цю опцію, користувачеві необхідно виконати такі дії:

  1. Запустити редактор реєстру (за допомогою команди regedit).
  2. Відкрити розділ реєстру HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters(параметри USB клавіатур).
  3. Створити DWORD-параметр CrashOnCtrlScroll зі значенням 1.
  4. Відкрити розділ реєстру HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters(параметри клавіатур, підключених через роз'єм PS/2).
  5. Створити DWORD-параметр CrashOnCtrlScroll зі значенням 1.
  6. Закрити редактор реєстру і перезавантажити комп'ютер.

Далі по подвійному натисненню SCROLL LOCK при утриманні RCTRL система відобразить «синій екран смерті» і перезавантажиться, записавши дискові кеші. Ця опція може бути корисна, наприклад, для отримання дампу пам'яті комп'ютера в заданий момент або для екстреної зупинки комп'ютера аналогічно кнопці Reset. Іноді вона використовується при розв'язанні справжніх проблем роботи операційної системи, оскільки відбувається запис дискових буферів, що зберігаються в пам'яті.

Також «синій екран смерті» можна викликати шляхом завершення критичного системного процесу csrss.exe або wininit.exe, або за допомогою спеціальної програми NotMyFault

Найпоширеніші помилки BSoD[ред. | ред. код]

  • 0x0000001A вказує, що сталася серйозна помилка управління пам'яттю.
  • 0x0000007B вказує, що під час запуску операційна система Microsoft Windows втратила доступ до системного розділу.
  • 0x00000050 вказує на спробу звернення до неприпустимої системної пам'яті.
  • 0x0000007E вказує, що системний потік згенерував виняток, який не вловив обробник помилок.
  • 0x0000000A вказує, що Microsoft Windows або драйвер отримали доступ до пам'яті на рівні DISPATCH_LEVEL або вище.
  • 0x0000003B вказує, що виключення відбулося при виконанні підпрограми переходу від непривілейованого коду до привілейованого коду.
  • 0x00000116 вказує, що зроблена спроба скинути драйвер дисплея і відновити його, але при цьому відбувається перевищення тайм-ауту.
  • 0x000000D1 вказує, що драйвер режиму ядра спробував отримати доступ до сторінкової пам'яті при виконанні процесу, IRQL якого має занадто високе значення.
  • 0x0000008E з'являється, коли додаток режиму ядра згенерував виняток, який не спіймав обробник помилок.
  • 0x00000024 вказує, що проблема сталася в ntfs.sys, файл драйвера, який дозволяє системі зчитувати та записувати дані з дисків NTFS.
  • 0x000000F4 вказує, що процес або потік, вкрай важливий для роботи системи, несподівано був завершений.
  • 0x000000A5 вказує, що BIOS не відповідає стандарту ACPI.
  • 0x0000007A вказує, що потрібна сторінка даних ядра зі сторінкового файлу не може завантажитися в пам'ять.
  • 0x0000001Е вказує, що програма в режимі ядра згенерувала виняток, який не виявив обробник помилок.

Посилання[ред. | ред. код]