Иллюзия одновременности и что делать с зависшим
Посмотрите, как планировщик гоняет процессы между тремя состояниями, а потом разберитесь, что делать, когда один из них перестал отвечать.
// состояния
Каждый процесс в каждый момент находится ровно в одном из трёх состояний. Ядро здесь одно, поэтому «выполняется» вмещает только одного - выберите процесс и переводите его кнопками ниже.
Выполняется
1Прямо сейчас использует процессорное ядро. Место одно: у нас одно ядро, а процессов больше.
Готов
Мог бы выполняться хоть сейчас, но ядро занято другим. Стоит в очереди и ждёт своей доли.
Ожидает
Не может выполняться, пока не произойдёт что-то внешнее: ответ диска или данные из сети. Процессорное время ему сейчас не нужно вообще.
- открывает большой файл
- ждёт своей очереди
- проверяет файлы в фоне
-
Операции с диском в десятки тысяч раз медленнее работы процессора. Пока программа ждёт данные, процессор мог бы сделать миллионы вычислений - поэтому она уходит в ожидание и немедленно освобождает ядро. Обратите внимание: место в «выполняется» освободилось.
-
Внешнее событие произошло, и процесс снова готов работать. Но ядро он получит не сразу, а при первой возможности: сначала встанет в очередь готовых.
-
Планировщик выбрал этот процесс из очереди готовых. Кнопка доступна, только когда ядро свободно: пока на нём кто-то есть, встать туда нельзя.
-
Процесс ничего не ждёт и сам бы не ушёл: его снимают принудительно, когда истекает выданный отрезок времени. Так ни одна программа не может захватить процессор навсегда.
В настоящей системе ядер обычно несколько, а процессов 100-300, и переключения происходят сотни раз в секунду. Здесь одно ядро и три процесса, чтобы правило «одно место в «выполняется» было видно глазами.
мест нетПять ситуаций: что зависло и что с этим делать
Зависший процесс изолирован: он не может заразить соседей, и система продолжает работать. Поэтому первый вопрос - не «как перезагрузиться», а «что именно перестало отвечать». Выберите свою ситуацию.
Что перестало отвечать?
Смотрите на то, что реагирует, а не на то, что не реагирует: работает ли остальная система, двигается ли курсор, откликаются ли другие окна.
Зависла одна вкладка: остальной браузер жив
Chrome и другие современные браузеры запускают отдельный процесс на каждую вкладку, плюс отдельные на плагины и отрисовку. Сделано это ровно для такого случая: бесконечный цикл в скрипте одной страницы не должен ронять весь браузер. Закройте вкладку или откройте встроенный диспетчер задач браузера - в Chrome это Shift+Esc - и снимите именно её процесс. Ни браузер, ни система при этом не пострадают.
Одна программа не отвечает - снимайте задачу
Классическое зависание: бесконечный цикл в коде, взаимная блокировка потоков или ожидание ресурса, который никогда не придёт. Процесс изолирован, соседей он не заражает. В Windows это Ctrl+Shift+Esc, диспетчер задач, правой кнопкой по процессу и «Снять задачу»; в macOS - Cmd+Option+Esc, «Принудительное завершение»; в Linux - kill с номером процесса или системный монитор. Перезагружать машину не нужно.
Задача не снимается: процесс ждёт ответа от ядра
Когда вы снимаете задачу, система сначала посылает процессу сигнал завершения, а если тот не реагирует - принудительный сигнал уничтожения. Не срабатывает это в одном случае: процесс застрял внутри системного вызова и ждёт ответа от драйвера - например, от диска, который перестал отвечать, или от сетевого хранилища, которого нет в сети. Убить его нельзя, пока ядро не отпустит. Подождите тайм-аут, отключите проблемное устройство - и снимайте задачу. Если диск сыпется, начинать надо не с этого, а со спасения данных.
Встали системные службы: рабочий стол ещё дышит
Курсор двигается, потому что его рисует драйвер видеокарты, а вот окна не открываются: встал системный процесс, отвечающий за оболочку. В Windows это часто проводник - его можно перезапустить прямо в диспетчере задач, не трогая всё остальное. Если не помогает, попробуйте переключиться на другой рабочий стол или войти по сети: система жива, встала только её видимая часть.
Не реагирует ничего - вот здесь перезагрузка оправдана
Курсор не двигается, клавиатура молчит, звук оборвался - значит встал не пользовательский процесс, а системный: драйвер устройства или компонент ядра. Такие работают в привилегированном режиме, и снять их нечем - ядро и есть тот, кто снимает. Это единственный случай, когда правильный ответ - перезагрузка. Если повторяется регулярно, ищите свежий драйвер: в современных системах ошибка ядра почти всегда приходит от них, а не от самой ОС.
Интерактив разработан ANY.BY - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/illyuziya-odnovremennosti