Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Многозадачность [ править ]

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

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

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

Причины [ править ]

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

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

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

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

Решения [ править ]

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

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

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

Заметки [ править ]

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

См. Также [ править ]

  • Прервать (вычисление)
  • Аномалия в программном обеспечении
  • Синий экран смерти
  • Сбой (вычисления)
  • Тупик
  • Livelock
  • Бесконечная петля
  • Непрерывный сон

Ссылки [ править ]

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