Зависание


Зависа́ние — компьютерное явление, при котором одна или несколько программ или вся операционная система перестают реагировать на действия пользователя[1], или начинают без остановки выполнять одну и ту же (не обязательно полезную или содержательную) операцию, не реагируя на сообщения от других программ[2][3]. В этот момент изображение, выводимое программой на монитор (если оно есть) может застыть, в отличие от ошибки исполнения, при которой на экран выдаётся сообщение.

Зависание стоит отличать от подвисания, когда компьютер перестаёт отвечать на запросы в течение определённого времени, а затем возобновляет работу без каких-либо действий со стороны пользователя; перезагружать компьютер при этом не требуется[1].

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

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

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

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