Зависание (вычисления) - Hang (computing)

В вычисление, а вешать или же заморозить происходит, когда либо процесс или система перестает реагировать на входы. Типичный пример - когда компьютер графический интерфейс пользователя (например, Microsoft Windows[а]) больше не реагирует на ввод текста на клавиатуре или перемещение мыши. Этот термин охватывает широкий спектр моделей поведения как в клиенты и серверы, и не ограничивается проблемами графического пользовательского интерфейса.

У зависаний есть разные причины и симптомы, в том числе: программного обеспечения или же аппаратное обеспечение дефекты, такие как бесконечный цикл или длительные бесперебойные вычисления, исчерпание ресурсов (взбучка ), неэффективное оборудование (удушение ), внешние события, такие как медленное компьютерная сеть, неправильная конфигурация и совместимость проблемы. Основной причиной обычно является исчерпание ресурсов: ресурсы, необходимые для работы какой-либо части системы, недоступны из-за того, что они используются другими процессами или просто недостаточны. Часто причиной является взаимодействие нескольких факторов, из-за чего Обобщающий термин а не технический.

Зависание может быть временным, если оно вызвано проблемой, которая разрешается сама собой, например медленным оборудованием, или может быть постоянным и требовать ручного вмешательства, как в случае аппаратной или программной логической ошибки. Многие современные операционные системы предоставить пользователю средства для принудительного завершения зависшей программы без перезагрузка или же выход из системы; некоторые операционные системы, например, разработанные для мобильных устройств, могут даже делать это автоматически. В случае более серьезных зависаний, затрагивающих всю систему, единственным решением может быть перезагрузка машины, обычно путем силовой цикл с кнопкой выключения / включения или сброса.

Зависание отличается от крушение, в котором отказ является немедленным и не связан с быстродействием входных данных.[нужна цитата ]

Многозадачность

В многозадачной операционной системе индивидуальный процесс или же нить застрять, например, заблокировать ресурс или попасть в бесконечный цикл, хотя влияние на систему в целом значительно различается. В совместная многозадачность система, любой поток, который застревает, не уступая, повесит систему, так как он клин сам как работающий поток и предотвращает запуск других потоков.

Напротив, современные операционные системы в основном используют упреждающая многозадачность, Такие как Windows 2000 и его преемники, а также Linux и Apple Inc. с macOS. В этих случаях застревание одного потока не обязательно приведет к зависанию системы, поскольку операционная система будет вытеснять его, когда истечет его временной интервал, позволяя запускать другой поток. Если поток действительно зависает, планировщик может переключиться на другую группу взаимозависимых задач, чтобы все процессы не зависали.[1] Однако застрявший поток по-прежнему будет потреблять ресурсы: по крайней мере, запись в расписании, и если он запущен (например, застрял в бесконечном цикле), он будет потреблять циклы процессора и мощность, когда он запланирован, замедляя работу системы, хотя она не вешает.

Однако даже при вытеснительной многозадачности система может зависнуть, а некорректно выполненная или вредоносная задача может привести к зависанию системы, в первую очередь за счет монополизации какого-либо другого ресурса, такого как ввод-вывод или память, даже если процессорное время нельзя монополизировать. Например, процесс, блокирующий файловую систему, часто приводит к зависанию системы.

Причины

Аппаратное обеспечение может привести к зависанию компьютера либо из-за того, что он работает периодически, либо из-за несовпадения с другим оборудованием компьютера.[2] (это может произойти, если Обновить ). Оборудование также может со временем выйти из строя из-за грязи или теплового повреждения.

Зависание может также произойти из-за того, что у программиста неверные условия завершения для петля, или в кооперативная многозадачность Операционная система, забывая уступить другим задачам. Говоря иначе, многие программного обеспечения связанные зависания вызваны потоки ожидая события, которого никогда не произойдет.[3] Это также известно как бесконечный цикл.

Еще одна причина зависаний - это состояние гонки в общении между процессы. Один процесс может отправить сигнал второму процессу, затем остановите выполнение, пока он не получит ответ. Если второй процесс занят, сигнал будет вынужден ждать, пока процесс до него не дойдет. Однако, если второй процесс был занят отправкой сигнала первому процессу, тогда оба процесса будут вечно ждать, пока другой не ответит на сигналы, и никогда не увидят сигнал другого (это событие известно как тупик ). Если процессы бесперебойный они будут зависать и должны быть отключены. Если хотя бы один из процессов является критическим ядро Процесс может зависнуть, и его придется перезапустить.

Может показаться, что компьютер зависает, хотя на самом деле он просто обрабатывает очень медленно. Это может быть вызвано тем, что одновременно работает слишком много программ, недостаточно памяти (баран ), или же фрагментация памяти, медленный доступ к оборудованию (особенно к удаленным устройствам), медленные системные API и т. д. Это также может быть вызвано скрытыми программами, которые были установлены тайно, например шпионское ПО.

Решения

Во многих случаях программы могут казаться зависшими, но они продвигаются медленно, и ожидание в течение нескольких минут позволит выполнить задачу.

Современное операционные системы предоставить механизм для завершения зависших процессов, например, с помощью Unix убийство команду или с помощью графических средств, таких как кнопка «Завершить задачу» на Windows Диспетчер задач. В старых системах, например работающих MS-DOS, ранние версии Windows или Классическая Mac OS часто нужно было полностью перезапущен в случае зависания.

На встроенные устройства где человеческое взаимодействие ограничено, сторожевой таймер может перезагрузка компьютер в случае зависания.

Примечания

  1. ^ Windows добавляет текст "(Не отвечает)"в заголовок окна. Поскольку Виндоус виста, полупрозрачный белый слой закроет содержимое окна при попытке взаимодействия с пользователем, чтобы было ясно, что программа не отвечает.

Смотрите также

Рекомендации

  1. ^ США 6052707, Д'Суза, Дэвид, «Превентивная многозадачность с кооперативными группами задач», опубликовано 21 июня 1996 г., выпущено 18 апреля 2000 г. 
  2. ^ «Как устранить зависание компьютера при обнаружении оборудования». Служба поддержки Microsoft. 2007-01-27. Архивировано из оригинал на 2016-03-14. Получено 2018-04-13.
  3. ^ Кальвин Ся (15 ноября 2006 г.). «Вот бесконечный цикл, который повесит вашу машину». Блоги Microsoft. Получено 2018-04-13.