2.3. Процессы и многозадачность

Опубликовано: 11.04.2026

 

← 2.2. Загрузка компьютера: 30 секунд изнутри 📋 Оглавление 2.4. Память как иллюзия: виртуальная память →
КАК УСТРОЕНО ВСЁ — статья 2.3

Процессы и многозадачность: иллюзия одновременности

Как компьютер выполняет десятки задач «одновременно», что такое планировщик задач и потоки - и почему зависший браузер не повод перезагружать всё

В предыдущей статье мы видели, как операционная система загружается: одним из первых в ядре запускается планировщик задач. Тогда мы намеренно прошли мимо - сейчас разберём подробно. Прямо сейчас, пока вы читаете эту статью, ваш компьютер, скорее всего, воспроизводит звук, проверяет почту, обновляет антивирусные базы, ждёт нажатия клавиши и следит за временем. Одновременно. Или нет?

На самом деле - нет. Настоящей одновременности нет. Есть иллюзия, и она создаётся очень умным способом.

🎚️ Один инженер, двадцать микрофонов

Представьте звукорежиссёра на прямом эфире. За пультом у него двадцать микрофонов - солисты, хор, инструменты. Все певцы убеждены, что инженер следит именно за ними прямо сейчас. На самом деле он переключает внимание от микрофона к микрофону: подкрутил уровень первому, послушал второго, поправил третьего, вернулся к первому. Если делать это достаточно быстро - у зала полное впечатление, что все голоса звучат одновременно и под постоянным контролем. Ни один певец не знает, что в эту конкретную секунду инженер занят не им.

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

💡 Исключение - несколько ядер: Современные процессоры имеют 4, 8, 16 ядер и больше. Это как несколько инженеров за разными секциями одного пульта - они действительно работают параллельно. Но даже на 8-ядерном процессоре, где одновременно выполняется 8 потоков, запущено обычно 100–300 процессов. Переключение всё равно происходит - просто на каждом ядре независимо.

🗂️ Что такое процесс

Программа на диске — это просто файл. Набор инструкций, написанных заранее. Когда вы запускаете программу, операционная система создаёт процесс - живой экземпляр этой программы в памяти.

Процесс — это не просто код. Это целая изолированная среда, которую ОС выделяет каждой программе:

Что входит в процесс Что это такое
Код программы Сами инструкции, загруженные в память
Данные Переменные, файлы, которые программа открыла
Стек Рабочая память для текущих вычислений и вызовов функций
Куча (heap) Динамически выделяемая память - то, что программа запросила в процессе работы
Дескрипторы ресурсов Список открытых файлов, сетевых соединений, устройств
Идентификатор (PID) Уникальный номер процесса в системе
Состояние регистров «Снимок» того, чем процессор занимался в момент последнего переключения

Ключевое слово - изолированная. Каждый процесс работает в своём отдельном адресном пространстве и не видит память других процессов. Браузер не может случайно (или намеренно) прочитать данные вашего текстового редактора. Это не просто удобство — это фундаментальный принцип безопасности. Подробнее о том, как ОС создаёт иллюзию отдельной памяти для каждого процесса, разберём в следующей статье, посвящённой виртуальной памяти.

📌 Программа и процесс - не одно и то же: Один и тот же браузер Chrome можно запустить дважды - получим два независимых процесса с одним кодом, но разными данными. И наоборот: один запуск Chrome создаёт не один процесс, а несколько десятков: отдельный для каждой вкладки, отдельный для плагинов, отдельный для GPU-рендеринга. Это сделано специально - чтобы зависание одной вкладки не приводило к сбою всего браузера.

⚡ Планировщик задач: невидимый дирижёр

Итак, процессов в системе сотня, а ядер процессора - восемь. Кто решает, кому достанется время на выполнение, а кто подождёт? Планировщик задач (scheduler) - один из важнейших компонентов ядра ОС.

Планировщик работает непрерывно. Он ведёт список всех процессов и их состояний, и постоянно решает: какому процессу выделить процессорное время прямо сейчас.

Три состояния процесса

Каждый процесс в каждый момент времени находится в одном из трёх состояний:

Состояние Что это означает Пример
Выполняется (Running) Прямо сейчас использует процессорное ядро Браузер отрисовывает страницу
Готов (Ready) Мог бы выполняться, но ядро занято другим процессом Музыкальный плеер ждёт своей очереди
Ожидает (Waiting / Blocked) Не может выполняться, пока не произойдёт что-то внешнее Программа ждёт ответа с жёсткого диска или из сети

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

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

Квант времени и вытесняющая многозадачность

Но что, если программа ничего не ждёт - просто считает и считает без остановки? Например, перекодирует видео. Неужели она захватит весь процессор и заблокирует остальных?

Для этого существует понятие кванта времени (time slice). Планировщик даёт каждому процессу небольшой отрезок процессорного времени - обычно от 1 до 100 миллисекунд. Когда квант истекает, специальный аппаратный таймер посылает прерывание: «время вышло». Планировщик принудительно снимает текущий процесс с ядра, сохраняет его состояние и ставит на его место следующего в очереди. Это называется вытесняющая многозадачность (preemptive multitasking). Если вернуться к аналогии со звукорежиссёром: он не сам решает, когда переключить внимание. Над ухом у него звенит таймер каждые несколько секунд - и он обязан перейти к следующему микрофону, хочет того или нет.

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

📌 Как это было раньше - кооперативная многозадачность: До Windows 95 и первых версий Mac OS существовала кооперативная многозадачность: программа сама добровольно уступала управление ОС. Это означало, что зависшая программа могла заморозить весь компьютер - потому что не возвращала контроль. Именно поэтому в старых Windows нужно было перезагружаться после каждой второй ошибки. Вытесняющая многозадачность решила эту проблему принципиально.

Приоритеты: не все равны

Планировщик не просто раздаёт время по кругу. Каждый процесс имеет приоритет - число, определяющее, как часто он получает процессорное время. Системные процессы ядра имеют высший приоритет. Процессы с интерфейсом пользователя получают приоритет выше фоновых, потому что задержки в интерфейсе человек замечает мгновенно. Фоновые задачи - резервное копирование, индексирование поиска - намеренно получают низкий приоритет, чтобы не мешать работе. В Windows планировщик дополнительно даёт временный «буст» тому окну, которое сейчас в фокусе - именно поэтому активная программа всегда реагирует чуть быстрее остальных.

В Windows это видно в «Диспетчере задач» в колонке «Приоритет». В Linux аналогичный показатель называется nice (буквально «вежливость» - насколько процесс готов уступать другим).

🧵 Потоки: задачи внутри задачи

Процесс - изолированная среда. Но внутри одного процесса может быть несколько параллельных линий выполнения. Они называются потоками (threads).

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

Процесс Поток
Изоляция памяти Полная - другие процессы не видят его память Нет - потоки одного процесса видят общую память
Создание Дорого: ОС выделяет новое адресное пространство Дёшево: копируется только стек и счётчик команд
Общение Сложно: нужны специальные механизмы (сокеты, каналы, разделяемая память) Просто: через общие переменные - но требует аккуратности
Катастрофа при ошибке Только этот процесс Может обрушить весь процесс

Классический пример потоков - текстовый редактор. Один поток обрабатывает ввод с клавиатуры. Второй - автоматически сохраняет файл каждые пять минут. Третий - проверяет орфографию в фоновом режиме. Все три работают «одновременно», делят одни и те же данные (текст документа) и живут внутри одного процесса.

💡 Почему многопоточность — это сложно: Когда два потока обращаются к одним данным одновременно, могут возникнуть «гонки» (race conditions). Представьте: оба потока читают значение счётчика (допустим, 5), оба прибавляют 1 и оба записывают 6. А должно получиться 7. Решение - блокировки (locks): пока один поток работает с данными, он «закрывает» их на замок, и другой ждёт. Но неправильно расставленные блокировки приводят к «дедлоку» - ситуации, когда два потока ждут друг друга вечно. Это один из самых сложных видов ошибок в программировании.

🔍 Как это выглядит изнутри: переключение контекста

Каждый раз, когда планировщик переключает процессор с одного процесса на другой, происходит переключение контекста (context switch). «Контекст» — это полное состояние процесса в данный момент: содержимое всех регистров процессора, указатель на текущую инструкцию, флаги состояния.

При переключении ОС делает три вещи:

1. Сохраняет контекст текущего процесса в специальную структуру в памяти - блок управления процессом (PCB, Process Control Block).

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

3. Восстанавливает контекст выбранного процесса: загружает его регистры обратно в процессор. Процессор продолжает выполнение ровно с того места, где в прошлый раз остановился.

Процесс при этом не знает, что его прерывали. С его точки зрения - он просто шёл и шёл вперёд. Это полная иллюзия непрерывного выполнения.

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

🛑 Зависший процесс: что происходит и что делать

Иногда процесс «зависает» - перестаёт отвечать. Почему это происходит и почему не нужно из-за этого перезагружать весь компьютер?

Процесс может зависнуть по нескольким причинам: бесконечный цикл в коде (программа считает и не может остановиться), дедлок между потоками, ожидание ресурса, который никогда не придёт, или просто ошибка в программе, которая привела её в неправильное состояние.

Ключевое: зависший процесс — это один изолированный процесс. Он не может «заразить» другие. ОС продолжает работать, другие программы продолжают работать. Достаточно завершить именно этот процесс.

Операционная система Как завершить зависший процесс
Windows Ctrl+Shift+Esc → «Диспетчер задач» → правой кнопкой по процессу → «Снять задачу»
macOS Cmd+Option+Esc → «Принудительное завершение» - или через «Монитор активности»
Linux kill [PID] или killall [имя программы] в терминале; либо системный монитор

Когда вы «снимаете задачу», ОС посылает процессу сигнал завершения. Если процесс не реагирует - посылает принудительный сигнал уничтожения: ядро немедленно освобождает всю память и ресурсы этого процесса. Чисто. Без последствий для остальных.

💡 Когда всё-таки нужна перезагрузка: Перезагрузка нужна, если завис не пользовательский процесс, а системный - например, драйвер устройства или компонент ядра. Такие процессы работают в привилегированном режиме ядра (об этом говорили в статье 2.1), и их нельзя просто «снять». Если система не реагирует ни на что — это именно такой случай. Но в современных ОС это редкость: большинство драйверов стабильны, а архитектура ядра специально проектируется так, чтобы ошибка одного компонента не роняла всё.

📊 Сколько процессов нормально?

Открыв «Диспетчер задач» или «Монитор активности», многие удивляются: 150, 200, 300 процессов - при том что открыт только браузер. Это нормально?

Да. Большинство из них - системные службы ОС, которые большую часть времени находятся в состоянии «ожидает» и не потребляют ни процессорного времени, ни заметного объёма памяти. Каждый занимает немного памяти для своей структуры, но реальную нагрузку создают лишь те, что активно что-то делают.

Что потребляет ресурсы по-настоящему Что почти не потребляет
Браузер с 20 вкладками Служба обновления, которая проверяет раз в час
Антивирус при активной проверке Служба печати, когда принтер не используется
Видеоредактор при рендеринге Системные демоны в состоянии ожидания
Игра Менеджер буфера обмена в простое

🔄 Итог: что происходит прямо сейчас

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

Это одна из самых элегантных иллюзий в программировании: сотни программ, каждая из которых убеждена, что она одна в системе. И именно эту иллюзию - но уже применительно к памяти - разберём в следующей статье. Каждый процесс не только думает, что занимает весь процессор, но и думает, что занимает всю память. Как ОС делает это одновременно для всех - тема статьи о виртуальной памяти.

💡 А что насчёт видеокарты? GPU - отдельная история. Если обычный процессор имеет 8–32 ядра и переключается между потоками с помощью планировщика ОС, то видеочип содержит тысячи маленьких вычислительных ядер, которые работают по-настоящему параллельно — одновременно, без очереди. Для задач вроде рендеринга графики или обучения нейросетей, где одна и та же операция применяется к миллионам элементов сразу, это принципиально другой подход. Подробнее об архитектуре GPU - в статье про видеокарту и в финальном эпилоге цикла.

📍 Привезите технику в сервис ANY.BY — диагностика бесплатно, работаем без выходных.
🚗 Не можете приехать — вызовите мастера на дом.
🛒 Ноутбуки, компьютеры и комплектующие — магазин magaz.by.

📞 +375 (33) 323-70-00 (МТС) | +375 (29) 323-70-00 (A1)
✉️ Telegram | Viber

➡️ Смотреть полный прайс-лист →

← 2.2. Загрузка компьютера: 30 секунд изнутри 📋 Оглавление 2.4. Память как иллюзия: виртуальная память →
Расписание работы · ул. Куйбышева, 26
Пн–Пт 10:00–19:00
Суббота 11:00–17:00
Воскресенье 12:00–16:00

★★★★★ 4.8 · 161 отзыв в Google
★★★★★ 4.8 · 41 отзыв в Яндекс
Е
Евгений Кисель
февраль 2025
★★★★★

Ремонтировал здесь ноутбук, всё сделали отлично. Рекомендую этот сервис.

Е
Екатерина
январь 2025
★★★★★

Благодарю за качественный ремонт. Осталась довольна результатом и ценой.

Т
Таня Мащенко
декабрь 2025
★★★★★

Спасибо за работу, обращалась неоднократно, всегда довольна результатом. Мастер объясняет все доступно, все нюансы в процессе ремонта оговариваются. Рекомендую

М
Максим Г.
сентябрь 2023
★★★★★

Хороший сервис по ремонту ПК. Качественно, быстро и с гарантией.

М
Марина К.
май 2021
★★★★★

Очень вежливый сервис. Починили компьютер в день обращения. Цены очень приятные. Большое спасибо!

В
Виталий
2018
★★★★★

Всё супер, быстро и профессионально. Рекомендую!

И
Игорь
июнь 2021
★★★★★

Рекомендую! Отличный подход к клиенту, всё честно и прозрачно. Делал апгрейд старого ПК, теперь всё летает.

Л
Л Т
2022
★★★★★

Не единожды сдавал ПК на апгрейд — всегда доволен результатом. Мастер всегда поможет и подскажет, не только по ремонту. В своём окружении всегда рекомендую Any.by.

Ю
Юрий
2017
★★★★★

Ремонтировал ноутбук, сделали быстро и качественно. Спасибо!

А
Анастасия Подберезская
январь 2026
★★★★★

Качественно и на совесть отремонтировали ноутбук. Объяснили все нюансы от А до Я. Адекватные цены. Приятный бонус — именной брелок из дерева в подарок) рекомендую!


📖 Как устроен компьютер

Цикл статей ANY.BY - от транзистора до интернета.
Простым языком, без лишней теории.

🎓 Читать учебник →