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

редактировать

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

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

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

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

Содержание
  • 1 Многозадачность
  • 2 Причины
  • 3 Решения
  • 4 См. Также
  • 5 Ссылки
Многозадачность

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

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

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

Причины

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

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

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

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

Решения

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

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

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

См. Также
Ссылки
Последняя правка сделана 2021-05-22 12:28:25
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте