stringtranslate.com

Повесить (вычисление)

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

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

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

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

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

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

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

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

Перемещение по окну поверх зависшей программы во время зависания может привести к перерисовке следа окна. [2]

Причины

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

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

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

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

Решения

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

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

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

Примечания

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

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

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

  1. ^ US 6052707, Д'Суза, Дэвид, «Вытесняющая многозадачность с совместными группами задач», опубликовано 21 июня 1996 г., выпущено 18 апреля 2000 г. 
  2. ^ «Ностальгия: перетаскивание диалогового окна ошибки Windows XP» . Архивировано из оригинала 19 января 2022 г. Проверено 19 января 2022 г.
  3. ^ «Как устранить зависание компьютера во время обнаружения оборудования» . Поддержка Майкрософт. 27 января 2007 г. Архивировано из оригинала 14 марта 2016 г. Проверено 13 апреля 2018 г.
  4. ^ Кэлвин Ся (15 ноября 2006 г.). «Вот бесконечный цикл, который повесит вашу машину». Блоги Майкрософт . Архивировано из оригинала 14 апреля 2018 г. Проверено 13 апреля 2018 г.