BSOD

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

Синій екран смерті (англ. Blue Screen of Death, BSoD) — назва повідомлення про критичну помилку операційної системи Microsoft Windows. Оскільки після появи цього повідомлення майже неможливо відновити нормальну працездатність системи, вона, як правило, передує перезавантаженню. Синій екран смерті вперше з'явився у 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-код, друга дозволяє також вказати згадані раніше 4 додаткових параметра.

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

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

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

Нова версія екрану з помилкою була помічена розробником після попереднього перегляду Windows 8 , випущеного у вересні 2012 року. Замість відображення детальної технічної інформації про помилку використаний спрощений для користувачів підхід, при якому відображається сумний смайлик і повідомлення про необхідність перезавантаження комп'ютера. Це було зроблено з міркувань, що багато користувачів не вдадуться в опис помилки, а просто натискають кнопки 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Е вказує, що програма в режимі ядра згенерувала виняток, яка не виявив обробник помилок.

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