Паника ядра - Kernel panic
А паника ядра (иногда сокращенно КП[1]) является мерой безопасности, принятой Операционная система с ядро при обнаружении внутреннего фатальная ошибка в котором либо невозможно безопасное восстановление, либо система не может продолжать работу без гораздо более высокого риска серьезной потери данных. Этот термин в значительной степени специфичен для Unix и Unix-подобный системы. За Майкрософт Виндоус операционные системы эквивалентный термин "Стоп-ошибка ", что приводит к проверке ошибок[2] экран, который представляет код проверки ошибок на синем фоне в ранних версиях Windows (в просторечии известный как "Синий экран смерти "или BSoD) или на зеленом фоне на платформе Xbox One, а также в предварительных сборках Windows 10.[3]
В ядро процедуры обработки паники, известные как паника()
в AT&T -производные и BSD Исходный код Unix, как правило, предназначен для вывода сообщение об ошибке к консоль, выгрузить образ памяти ядра на диск для посмертная отладка, а затем либо дождитесь перезагрузки системы вручную, либо инициируйте автоматический перезагрузка.[4] Предоставленная информация носит технический характер и направлена на то, чтобы помочь Системный администратор или же разработчик программного обеспечения в диагностике проблемы. Паника ядра также может быть вызвана ошибками, происходящими вне пространства ядра. Например, во многих операционных системах Unix возникает паника, если в этом процесс, который выполняется в пространство пользователя, завершается.[5][6]
История
В Unix ядро поддерживает внутреннюю согласованность и время выполнения правильность с утверждения как обнаружение неисправности механизм. Основное предположение состоит в том, что оборудование и программное обеспечение должны работать правильно, а сбой утверждения приводит к паника, т.е. добровольное прекращение всей активности системы.[7] Паника ядра была введена в ранней версии Unix и продемонстрировала существенное различие между философией проектирования Unix и ее предшественником. Мультики. Разработчик Multics Том ван Влек вспоминает обсуждение этого изменения с разработчиком Unix Деннис Ричи:
Я заметил Деннису, что половина кода, который я писал на Multics, составляла код восстановления после ошибок. Он сказал: «Мы оставили все это. Если есть ошибка, у нас есть такая процедура, которая называется паника, и когда она вызывается, машина вылетает, и вы кричите по коридору:« Эй, перезагрузите ее »».[8]
Оригинал паника()
функция практически не изменилась с Fifth Edition UNIX до VAX -на основе UNIX 32V и выводит только сообщение об ошибке без какой-либо другой информации, а затем сбрасывает систему в бесконечный цикл ожидания.
Исходный код паника()
функционировать в V6 UNIX:[9]
/* * Если консоль выключена, * panicstr содержит аргумент до последнего * призыв к панике. */char *паника;/* * Паника вызывается на неразрешимую * фатальные ошибки. * Он синхронизирует, печатает "panic: mesg" и * затем петли. */паника(s)char *s;{ паника = s; Обновить(); printf("паника:% s п", s); за(;;) праздный();}
Поскольку Unix кодовая база был усилен, паника()
Функция также была улучшена для вывода на консоль различных форм отладочной информации.
Причины
Паника может возникнуть в результате аппаратного сбоя или программная ошибка в операционной системе. Во многих случаях операционная система способна продолжить работу после возникновения ошибки. Однако система находится в нестабильном состоянии, и вместо того, чтобы рисковать нарушениями безопасности и повреждением данных, операционная система останавливается, чтобы предотвратить дальнейшее повреждение и облегчить диагностику ошибки и, в обычных случаях, перезапустить.[10]
После перекомпиляции бинарного образа ядра из исходный код, паника ядра, пока загрузка получившееся ядро - обычная проблема, если ядро было неправильно сконфигурировано, скомпилировано или установлено.[11] Дополнительное оборудование или неисправное баран также может быть источником фатальных ошибок ядра при запуске из-за несовместимости с ОС или отсутствия драйвер устройства.[12] Ядро также может входить в паника()
если он не может найти корневая файловая система.[13] На заключительных этапах ядра пространство пользователя инициализации, паника обычно срабатывает, если порождение в этом терпит неудачу. Также может возникнуть паника, если процесс инициализации завершится, так как в этом случае система станет непригодной для использования.[14]
Ниже представлена реализация финальной инициализации ядра Linux в kernel_init ()
:[15]
статический int __ref kernel_init(пустота *неиспользованный){ ... /* * Мы пробуем каждый из них, пока один из них не добьется успеха. * * Оболочка Bourne может использоваться вместо init, если мы * пытается восстановить действительно сломанную машину. */ если (execute_command) { если (!run_init_process(execute_command)) возвращаться 0; pr_err("Не удалось выполнить% s. Попытка выполнить настройки по умолчанию ... п", execute_command); } если (!run_init_process("/ sbin / init") || !run_init_process("/ etc / init") || !run_init_process("/ bin / init") || !run_init_process("/ bin / sh")) возвращаться 0; паника(«Не найдено ни одного файла инициализации. Попробуйте передать ядру параметр init =». «См. Документацию Linux / init.txt для руководства».);}
Особенности операционной системы
Linux
Паники ядра появляются в Linux как в других Unix-подобный системы, но они также могут генерировать другой вид состояния ошибки, известный как ядро ой.[16] В этом случае ядро обычно продолжает работать после убийство оскорбление процесс. Поскольку ошибка может привести к недоступности некоторых подсистем или ресурсов, позже они могут привести к полной панике ядра.
В Linux из-за паники ядра индикаторы клавиатуры мигают как визуальное указание на критическое состояние.[17]
macOS
Когда паника ядра происходит в Mac OS X 10.2–10.7, компьютер отображает многоязычное сообщение, информирующее пользователя о том, что ему необходимо перезагрузить систему.[18] До версии 10.2 отображалось более традиционное сообщение о панике в стиле Unix; в 10.8 и более поздних версиях компьютер автоматически перезагружается, и после перезагрузки отображается сообщение. Формат сообщения варьируется от версии к версии:[19]
- 10.0–10.1: система отображает на экране текст с подробными сведениями об ошибке и перестает отвечать.
- 10.2: опускает черную прозрачную шторку, затем отображает сообщение на белом фоне, информирующее пользователя о том, что он должен перезагрузить компьютер. Сообщение отображается в английский, Французский, Немецкий и Японский.
- 10.3–10.5: паника ядра почти такая же, как и в версии 10.2, но фон экрана ошибки черный.
- 10.6–10.7-10.8: текст был изменен и теперь включает испанский перевод.
- 10.9 и новее: компьютер перестает отвечать перед немедленной перезагрузкой. Когда компьютер запускается, он показывает предупреждающее сообщение в течение нескольких секунд о перезагрузке компьютера из-за паники ядра, а затем компьютер перезагружается. Сообщение теперь включает Китайский перевод.
Иногда при возникновении пяти или более паники ядра в течение трех минут после первой на Mac отображается сообщение запрещающий знак на 30 секунд, а затем завершите работу (это известно как «повторяющаяся паника ядра»).
Во всех версиях выше 10.2 текст накладывается на символ ожидания и не во весь экран. Отладочная информация сохраняется в NVRAM и записывается в файл журнала при перезагрузке. В 10.7 есть функция автоматического перезапуска после паники ядра. В некоторых случаях в 10.2 и более поздних версиях помимо символа режима ожидания может отображаться белый текст с подробным описанием ошибки.
Паника ядра Mac OS X 10.0–10.1
Паника ядра Mac OS X 10.2
Паника ядра Mac OS X 10.3–10.5
Mac OS X 10.6 и 10.7 паника ядра
Сообщение отображается после перезагрузки компьютера из-за паники ядра в OS X 10.8 и более поздние версии
Смотрите также
Рекомендации
- ^ «KP - Kernel Panic (Linux) | AcronymFinder». www.acronymfinder.com. Получено 6 января, 2016.
- ^ «Проверка ошибок (синие экраны)». Центр разработки оборудования - Microsoft.
- ^ Хоффман, Крис. «Знаете ли вы, что в Windows 10 есть зеленый экран смерти?». How-To Компьютерщик. Получено 4 июня, 2020.
- ^ «FreeBSD 11.0 - справочная страница по панике (раздел 9 freebsd) - Команды Unix и Linux». www.unix.com.
- ^ "ошибка загрузки-init умер - Unix Linux Forums - HP-UX". www.unix.com.
- ^ Рэндольф Дж. Гербер (1 сентября 1999 г.). "Re: PANIC: init умер". Группа новостей: comp.sys.sgi.admin.
- ^ Дэниел П. Севиорек; Роберт С. Сварц (1998). Надежные компьютерные системы: проектирование и оценка. А. К. Петерс, ООО с. 622. ISBN 978-1-56881-092-8. Получено 6 мая, 2011.
- ^ "Unix и Multics". www.multician.org.
- ^ Исходный код /usr/sys/ken/prf.c из V6 UNIX
- ^ Стивен М. Хэнкок (22 ноября 2002 г.). Устранение неполадок Tru64 UNIX: диагностика и устранение системных проблемHP Technologies SeriesITPro collection. Цифровая пресса. С. 119–126. ISBN 978-1-55558-274-6. Получено 3 мая, 2011.
- ^ Майкл Джанг (2006). Недовольство Linux для гиков. O'Reilly Media, Inc., стр. 267–274. ISBN 978-0-596-00801-7. Получено 29 апреля, 2011.
- ^ Дэвид Пог (17 декабря 2009 г.). Переход на Mac: отсутствующее руководство, издание Snow Leopard. O'Reilly Media, Inc. стр. 589. ISBN 978-0-596-80425-1. Получено 4 мая, 2011.
- ^ Грег Кроа-Хартман (2007). Вкратце о ядре Linux. O'Reilly Media, Inc. стр. 59. ISBN 978-0-596-10079-7. Получено 3 мая, 2011.
- ^ Вольфганг Мауэрер (26 сентября 2008 г.). Профессиональная архитектура ядра Linux. Джон Уайли и сыновья. С. 1238–1239. ISBN 978-0-470-34343-2. Получено 3 мая, 2011.
- ^ linux / init / main.c, LXR Cross Referencer
- ^ "Драйверы устройств Linux, Глава 4" (PDF).
- ^ Джеймс Киркланд; Дэвид Кармайкл; Кристофер Л. Тинкер; Грегори Л. Тинкер (май 2006 г.). Устранение неполадок Linux для системных администраторов и опытных пользователей. Prentice Hall. п. 62. ISBN 9780132797399. Получено 5 февраля, 2016.
- ^ «OS X: о панике ядра - служба поддержки Apple». support.apple.com.
- ^ «Новый экран смерти для Mac OS X». OSXBook.com.