Loading AI tools
Из Википедии, свободной энциклопедии
Зависа́ние — компьютерное явление, при котором одна или несколько программ или вся операционная система перестают реагировать на действия пользователя[1], или начинают без остановки выполнять одну и ту же (не обязательно полезную или содержательную) операцию, не реагируя на сообщения от других программ[2][3]. В этот момент изображение, выводимое программой на монитор (если оно есть) может застыть, в отличие от ошибки исполнения, при которой на экран выдаётся сообщение.
Зависание стоит отличать от подвисания, когда компьютер перестаёт отвечать на запросы в течение определённого времени, а затем возобновляет работу без каких-либо действий со стороны пользователя; перезагружать компьютер при этом не требуется[1].
В многозадачной операционной системе возможно зависание отдельного процесса или потока, например, блокировка ресурса или попадание в бесконечный цикл. В кооперативной многозадачной системе любой поток, который зависает, но не отдаёт управление, приведёт к зависанию системы, поскольку он не позволит другим потокам работать.
Напротив, современные операционные системы в основном используют упреждающую многозадачность, такие как Windows 2000 и её преемники, а также Linux и macOS от Apple Inc. В этих случаях зависание одного потока не обязательно приведет к зависанию системы, поскольку операционная система вытеснит его, когда истечёт его временной интервал, позволяя запустить другой поток. Если поток действительно зависает, планировщик может переключиться на другую группу взаимозависимых задач, чтобы все процессы не зависали[4]. Однако застрявший поток всё равно будет потреблять ресурсы: по крайней мере, запись в расписании, и если он запущен (например, застрял в бесконечном цикле), он будет потреблять процессорные циклы и мощность, когда он запланирован, замедляя работу системы, хотя и не приводя к зависанию системы в целом. Перемещение по окну поверх зависшей программы во время зависания может привести к перерисовке следа окна[5].
Однако даже при упреждающей многозадачности сама операционная система может зависнуть, а также неправильная или вредоносная задача может привести к зависанию системы, в первую очередь за счёт монополизации какого-либо другого ресурса, такого как ввод-вывод или память, хотя процессорное время не может быть монополизировано. Например, процесс, который блокирует файловую систему, часто приводит к зависанию системы.
По масштабности:
По повторяемости:
Иногда может показаться, что компьютер зависает, хотя на самом деле он просто работает очень медленно или выполняет очень длительную операцию. Это может быть вызвано слишком большим количеством программ, запущенных одновременно, недостатком памяти (ОЗУ) или фрагментацией памяти, медленным доступом к оборудованию (особенно к удаленным устройствам), медленными системными API и т. д. Это также может быть вызвано скрытыми программами, которые были установлены тайно, такими как шпионские программы.
Во многих случаях может показаться, что программы зависли, но в действительности они просто медленно выполняются, и ожидание в течение нескольких минут позволит завершить задачу.
Современные операционные системы предоставляют механизм для завершения зависших процессов, например, с помощью команды kill в Unix, taskkill в Windows или с помощью графических средств, таких как кнопка «Завершить задачу» диспетчера задач в Windows (выберите конкретный процесс в списке и нажмите «Завершить задачу»). Windows добавляет текст «(Не отвечает)» к заголовку окна. Начиная с Windows Vista, прозрачный белый слой будет покрывать содержимое окна при попытке взаимодействия с пользователем, чтобы было ясно, что программа не реагирует (при этом программа не обязательно зависла, возможно идут длительные вычисления или ожидается ответ от баз данных/сетевых ресурсов и прочее)[10].
В старых системах, таких как те, которые работают под управлением MS-DOS, ранних версий Windows или классической Mac OS, часто требовалась полная перезагрузка в случае зависания.
Во многих случаях зависание программы приводит к потере всех несохранённых данных в программе[3], хотя некоторые программы пытаются предотвратить это путём механизма автосохранения документов[11].
На встраиваемых устройствах, где взаимодействие с человеком ограничено, сторожевой таймер может перезагрузить компьютер в случае зависания.
Продолжить работу программы можно только выгрузив её из памяти и запустив на исполнение снова. В большинстве современных операционных систем предусмотрена возможность прерывания исполнения программ, например — команда kill и различные интерфейсы к ней в системах GNU/Linux, или диспетчер задач, либо консольная команда taskkill в Microsoft Windows. В случае полного зависания ОС, когда она не реагирует на ввод клавиатуры или мыши, работу можно продолжить только после полной перезагрузки операционной системы, либо использования Magic SysRq в Linux (REISUB).
Устранение стабильных зависаний связано с выявлением их причин — обновление драйверов и зависающей программы, чистка компьютера от пыли, замена термопасты, блока питания, удаление вирусов и так далее[1][2].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.