Сбой (вычисления)
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2013 г. ) |
В вычислительной технике сбой перестает или сбой системы происходит, когда компьютерная программа, такая как программное обеспечение или операционная система, работать должным образом и завершает работу . В некоторых операционных системах или отдельных приложениях служба отчетов о сбоях сообщает о сбое и любых деталях, связанных с ним (или дает пользователю возможность сделать это), обычно разработчику (ам) приложения. Если программа является важной частью операционной системы, вся система может выйти из строя или зависнуть, что часто приводит к панике ядра или фатальной системной ошибке .
Большинство сбоев являются результатом программной ошибки . Типичные причины включают доступ к неверным адресам памяти, [а] неправильные значения адреса в программном счетчике , переполнение буфера , перезапись части затронутого программного кода из-за более ранней ошибки, выполнение недопустимых машинных инструкций ( незаконный или несанкционированный код операции) или запуск необработанного исключения . Причиной сбоя обычно считается исходная программная ошибка, вызвавшая эту цепочку событий, которая обнаруживается в процессе отладки . Исходная ошибка может быть далека от кода , который фактически вызвал сбой.
В ранних персональных компьютерах попытка записи данных на аппаратные адреса за пределами основной памяти системы могла привести к повреждению оборудования. Некоторые сбои могут быть использованы и позволяют вредоносной программе или хакеру выполнить произвольный код , что позволяет копировать вирусы или получать данные, которые обычно были бы недоступны.
Приложение выходит из строя
[ редактировать ]Приложение обычно выходит из строя, когда оно выполняет операцию, не разрешенную операционной системой. Затем операционная система запускает исключение или сигнал в приложении. Приложения Unix традиционно реагировали на сигнал сбросом ядра . Windows и Unix Большинство приложений с графическим пользовательским интерфейсом в ответ отображают диалоговое окно (например, показанное справа) с возможностью подключения отладчика , если он установлен. Некоторые приложения пытаются восстановиться после ошибки и продолжают работу, а не завершают работу .
Приложение также может содержать код, приводящий к сбою. [б] после обнаружения серьезной ошибки.
К типичным ошибкам, приводящим к сбою приложения, относятся:
- попытка чтения или записи памяти, которая не выделена для чтения или записи этим приложением (например, ошибка сегментации , специфичная для x86 , общая ошибка защиты )
- попытка выполнить привилегированные или недействительные инструкции
- попытка выполнить операции ввода-вывода на аппаратных устройствах, к которым у него нет разрешения на доступ
- передача недопустимых аргументов в системные вызовы
- попытка получить доступ к другим системным ресурсам, к которым у приложения нет разрешения на доступ
- попытка выполнить машинные инструкции с неверными аргументами (в зависимости от архитектуры ЦП): деление на ноль , операции с ненормальными числами или значениями NaN (не числа), доступ к памяти по невыровненным адресам и т. д.
Вылет на рабочий стол
[ редактировать ]Говорят, что «вылет на рабочий стол» происходит, когда программа (обычно видеоигра ) неожиданно завершает работу, резко возвращая пользователя обратно на рабочий стол . Обычно этот термин применяется только к сбоям, при которых ошибки не отображаются, поэтому все, что пользователь видит в результате сбоя, — это рабочий стол. Во многих случаях нет видимых действий, которые вызывают сбой на рабочем столе. Во время нормальной работы программа может зависнуть на более короткий период времени, а затем закрыться сама. Также во время нормальной работы программа может отображать черный экран и неоднократно воспроизводить последние несколько секунд звука (в зависимости от размера аудиобуфера ) , который воспроизводился до того, как она вылетела на рабочий стол. В других случаях может показаться, что это вызвано определенным действием, например загрузкой области.
Ошибки, связанные с выходом на рабочий стол, считаются особенно проблематичными для пользователей. Поскольку они часто не отображают никаких сообщений об ошибках, может быть очень сложно отследить источник проблемы, особенно если время их возникновения и действия, происходящие непосредственно перед сбоем, не имеют какой-либо закономерности или общей точки зрения. Один из способов выявить источник проблемы игр — запустить их в оконном режиме. В Windows Vista есть функция, которая может помочь отследить причину проблемы CTD, когда она возникает в любой программе. [ нужны разъяснения ] Windows XP также включала аналогичную функцию. [ нужны разъяснения ]
Некоторые компьютерные программы, такие как StepMania от BBC и Bamzooki , также вылетают на рабочий стол в полноэкранном режиме, но отображают ошибку в отдельном окне, когда пользователь возвращается на рабочий стол.
Веб-сервер выходит из строя
[ редактировать ]Программное обеспечение, на котором работает веб-сервер веб- сайта, может выйти из строя, что сделает его полностью недоступным или выдаст только сообщение об ошибке вместо обычного контента.
Например: если сайт использует базу данных SQL (например, MySQL ) для сценария (например, PHP ) и этот сервер базы данных SQL выходит из строя, то PHP отобразит ошибку соединения.
Сбой операционной системы
[ редактировать ]Сбой операционной системы обычно происходит, когда возникает аппаратное исключение , которое невозможно обработать . Сбои операционной системы также могут произойти, когда внутренняя логика проверки работоспособности операционной системы обнаруживает, что операционная система потеряла свою внутреннюю самосогласованность.
Современные многозадачные операционные системы, такие как Linux и macOS , обычно остаются невредимыми при сбое прикладной программы.
Некоторые операционные системы, например z/OS , имеют средства обеспечения надежности, доступности и удобства обслуживания (RAS), и ОС может восстанавливаться после сбоя критического компонента, будь то из-за сбоя оборудования, например, неисправимой ошибки ECC, или сбоя программного обеспечения. , например, ссылка на неназначенную страницу.
Ненормальный конец
[ редактировать ]Ненормальное завершение или ABEND — это ненормальное завершение работы программного обеспечения или сбой программы. Ошибки или сбои в сетевой операционной системе Novell NetWare обычно называются ABEND. сообщества администраторов NetWare В Интернете возникли , такие как abend.org .
Такое использование происходит от макроса ABEND IBM OS/360 , ..., z/OS в операционных системах . Обычно пишется с заглавной буквы, но может означать «abend». Некоторыми распространенными кодами ABEND являются системные ABEND 0C7 (исключение данных) и системные ABEND 0CB ( деление на ноль ). [1] [2] [3] Прерывания могут быть «мягкими» (позволяющими автоматическое восстановление) или «жесткими» (прекращающими действие). [4] В шутку утверждается, что этот термин произошел от немецкого слова « Abend », означающего «вечер». [5]
Последствия сбоев для безопасности и конфиденциальности
[ редактировать ]пользователя В зависимости от приложения сбой может содержать конфиденциальную и личную информацию . [6] Более того, многие программные ошибки, вызывающие сбои, также могут быть использованы для выполнения произвольного кода и других типов повышения привилегий . [7] [8] Например, переполнение буфера стека может перезаписать адрес возврата подпрограммы недопустимым значением, что приведет, например, к ошибке сегментации , когда подпрограмма вернется. Однако если эксплойт перезапишет адрес возврата допустимым значением, код по этому адресу будет выполнен.
Воспроизведение сбоя
[ редактировать ]Когда сбои собираются в полевых условиях с помощью средства отчетов о сбоях , следующим шагом для разработчиков является возможность воспроизвести их локально. Для этого существует несколько методик: STAR использует символическое исполнение, [9] EvoCrash выполняет эволюционный поиск. [10]
См. также
[ редактировать ]- Синий экран смерти
- Защита от копирования
- Программное обеспечение, работающее только при сбоях
- Потеря данных
- Учитель медитации
- Повреждение памяти
- Защита памяти
- Ошибка страницы
- Перезагрузить
- Безопасный режим
- Ошибка сегментации
- Нарушение правил хранения
- ТЮЛЕНЬ
- СИГСЕГВ
- SystemRescueCD
- Неопределенное поведение
Примечания
[ редактировать ]- ^ Типы недействительных адресов включают:
- Неверный реальный адрес
- Неверный номер сегмента
- Неверный номер страницы
- Адрес не находится на правильной границе (ошибка выравнивания)
- ^ В OS/360 и последующих версиях приложение обычно использует макрос ABEND с пользовательским кодом завершения.
Ссылки
[ редактировать ]- ^ «АБЕНД» (PDF) . Выпуск ОС 21 — Операционная система System/360 — Службы Supervisor и инструкции по макросам (PDF) (Восьмое изд.). ИБМ . Сентябрь 1974 г., стр. 97–99. GC28-6646-7 . Проверено 8 июля 2023 г.
- ^ «0Cx — системные коды z/OS MVS» . ИБМ.
- ^ Список кодов ABEND. Архивировано 16 сентября 2018 г. на Wayback Machine на сайте madisoncollege.edu.
- ^ Парциале, Лидия (2008). Операции с z/VM и Linux для системных программистов z/OS . Красные книги IBM. ISBN 9780738431598 . страница 352
- ↑ «Abend». Архивировано 29 сентября 2011 г., в Wayback Machine на словаре.die.net.
- ^ Сатват, Киаваш; Саксена, Нитеш (2018). «Нарушение конфиденциальности: вскрытие просочившихся отчетов о сбоях веб-браузера». arXiv : 1808.01718 [ cs.CR ].
- ^ «Анализ сбоев, чтобы найти уязвимости безопасности в ваших приложениях» . Msdn.microsoft.com. 26 апреля 2007 г. Архивировано из оригинала 11 декабря 2011 г. Проверено 26 июня 2014 г.
- ^ «Джесси Рудерман »Ошибки безопасности памяти в коде C++» . Squarefree.com. 1 ноября 2006 г. Архивировано из оригинала 11 декабря 2013 г. . Проверено 26 июня 2014 г.
- ^ Чен, Нин; Ким, Сонхун (2015). «STAR: автоматическое воспроизведение сбоев на основе трассировки стека посредством символического выполнения». Транзакции IEEE по разработке программного обеспечения . 41 (2): 198–220. дои : 10.1109/TSE.2014.2363469 . ISSN 0098-5589 . S2CID 6299263 .
- ^ Солтани, Можан; Паничелла, Аннибале; ван Дёрсен, Ари (2017). «Управляемый генетический алгоритм для автоматического воспроизведения сбоев». IEEE/ACM, 2017 г. 39-я Международная конференция по программной инженерии (ICSE ) стр. 209–220. дои : 10.1109/ICSE.2017.27 . ISBN 978-1-5386-3868-2 . S2CID 199514177 . Архивировано из оригинала 25 января 2022 года . Проверено 21 декабря 2020 г.