Kernel panic (англ., букв.: паніка ядра) — повідомлення про критичну помилку ядра операційної системи, після якої операційна система не може продовжувати подальшу роботу.
Зазвичай цей термін застосовується у середовищі операційних систем типу UNIX. Її ім'я пов'язане з текстом помилки виду «Kernel panic: …» і ім'ям функції ядра panic() з оригінальної ОС UNIX.
У Linux виникненню паніки ядра найчастіше передує стан під назвою oops. В ряді випадків oops може призводити до такого ж недієздатного стану системи, як і у випадку з Kernel panic.
Історія
Повідомлення Kernel panic було введено в попередніх версіях UNIX і являло собою важливу відмінність у філософії цієї операційної системи від головного конкурента на той час, Multics. Розробник Multics, Том ван Влек, так описує цю зміну в дискусії з розробником UNIX Денісом Рітчі[1]:
Я сказав Деннісу, що приблизно половина коду, який я написав для Multics, була кодом обробки помилок. Він відповів: «Ми все це відкинули. Якщо сталася помилка, у нас є процедура під назвою panic, і якщо вона викликана, комп'ютер зависає і ви кричите: "Гей, перезапустіть його!" »
Оригінальний текст (англ.)
I remarked to Dennis that easily half the code I was writing in Multics was error recovery code. He said, «We left all that stuff out. If there’s an error, we have this routine called panic, and when it is called, the machine crashes, and you holler down the hall, ‘Hey, reboot it.’
Початкова функція panic() принципово не мінялася від UNIX V5 до версії 32V (на платформі VAX) і виводила тільки повідомлення про помилку без додаткової інформації, після чого система переводилася в нескінченний порожній цикл. Пізніше, в процесі розвитку UNIX, функція panic() була доопрацьована і стала виводити на консоль чи термінал різноманітну інформацію, корисну при зневадженні.
Подібний принцип обробки критичних помилок був перейнятий більшістю пізніших операційних систем, наприклад Mac OS[2] або Microsoft Windows.
Причини для Kernel panic
У більшості випадків причиною для Kernel panic є критична апаратна помилка (відмова оперативної пам'яті, помилка процесора чи іншого критично важливого пристрою) або помилка в самому ядрі операційної системи, наприклад спроба звернення до помилкової або забороненої адреси в пам'яті. Також причиною для Kernel panic можуть бути помилки в драйверах периферійних пристроїв або помилки у файловій системі.
Теоретично, помилки в прикладних програмах в сучасних операційних системах не повинні призводити до Kernel panic, оскільки будь-яка подібна помилка повинна коректно оброблятися ядром.
Kernel Panic в різних операційних системах
Спочатку повідомлення Kernel Panic обмежувалося коротким текстом про необхідність перезавантаження системи. У сучасних системах зазвичай видається більше додаткової інформації.
GNU/Linux і більшість інших Unix-сумісних операційних систем створюється лог з описом помилки і на екран виводиться повідомлення про помилку, що містить інформацію, необхідну для зневадження і пошуку причин. Цей механізм має назву Linux oops. У сучасних дистрибутивах Linux використовується графічний сервер X Window, і Kernel panic не призводить до перемикання на системну консоль, на яку виводяться діагностичні повідомлення. Розпізнати Kernel Panic можна за миготливими світлодіодами Caps Lock та Scroll Lock на клавіатурі.
В Mac OS X це повідомлення було спрощено і повідомляє лише про необхідність перезапуску комп'ютера. Серед користувачів воно отримало назву «The Gray Screen of Panic and Disarray».
У той час як термін Kernel Panic вживається в основному для Unix-сумісних операційних систем, в інших операційних системах обробка критичних помилок методом зупинки системи отримала інші назви:
На PSP це напис на 10 мовах: «Дані конфігурації пошкоджені. Натисніть . Для відновлення стандартної конфігурації.»
В P2K[що це?] (на телефонах Motorola) повідомлення на екран не виводяться, проте дані про помилку записуються в спеціально відведену область пам'яті Panic Area. Її можна переглянути за допомогою спеціальних програм або через прихований пункт меню «Технологія».