2.3. Процессы и многозадачность
2.3. Процессы и многозадачность
Опубликовано: 11.04.2026
Процессы и многозадачность: иллюзия одновременности
Как компьютер выполняет десятки задач «одновременно», что такое планировщик задач и потоки - и почему зависший браузер не повод перезагружать всё
В предыдущей статье мы видели, как операционная система загружается: одним из первых в ядре запускается планировщик задач. Тогда мы намеренно прошли мимо - сейчас разберём подробно. Прямо сейчас, пока вы читаете эту статью, ваш компьютер, скорее всего, воспроизводит звук, проверяет почту, обновляет антивирусные базы, ждёт нажатия клавиши и следит за временем. Одновременно. Или нет?
На самом деле - нет. Настоящей одновременности нет. Есть иллюзия, и она создаётся очень умным способом.
🎚️ Один инженер, двадцать микрофонов
Представьте звукорежиссёра на прямом эфире. За пультом у него двадцать микрофонов - солисты, хор, инструменты. Все певцы убеждены, что инженер следит именно за ними прямо сейчас. На самом деле он переключает внимание от микрофона к микрофону: подкрутил уровень первому, послушал второго, поправил третьего, вернулся к первому. Если делать это достаточно быстро - у зала полное впечатление, что все голоса звучат одновременно и под постоянным контролем. Ни один певец не знает, что в эту конкретную секунду инженер занят не им.
Процессор работает точно так же. Он переключается между задачами так быстро, что пользователь не замечает разрывов. Каждое переключение происходит сотни или тысячи раз в секунду. Это и есть многозадачность - не одновременное выполнение, а быстрое чередование.
🗂️ Что такое процесс
Программа на диске — это просто файл. Набор инструкций, написанных заранее. Когда вы запускаете программу, операционная система создаёт процесс - живой экземпляр этой программы в памяти.
Процесс — это не просто код. Это целая изолированная среда, которую ОС выделяет каждой программе:
| Что входит в процесс | Что это такое |
|---|---|
| Код программы | Сами инструкции, загруженные в память |
| Данные | Переменные, файлы, которые программа открыла |
| Стек | Рабочая память для текущих вычислений и вызовов функций |
| Куча (heap) | Динамически выделяемая память - то, что программа запросила в процессе работы |
| Дескрипторы ресурсов | Список открытых файлов, сетевых соединений, устройств |
| Идентификатор (PID) | Уникальный номер процесса в системе |
| Состояние регистров | «Снимок» того, чем процессор занимался в момент последнего переключения |
Ключевое слово - изолированная. Каждый процесс работает в своём отдельном адресном пространстве и не видит память других процессов. Браузер не может случайно (или намеренно) прочитать данные вашего текстового редактора. Это не просто удобство — это фундаментальный принцип безопасности. Подробнее о том, как ОС создаёт иллюзию отдельной памяти для каждого процесса, разберём в следующей статье, посвящённой виртуальной памяти.
⚡ Планировщик задач: невидимый дирижёр
Итак, процессов в системе сотня, а ядер процессора - восемь. Кто решает, кому достанется время на выполнение, а кто подождёт? Планировщик задач (scheduler) - один из важнейших компонентов ядра ОС.
Планировщик работает непрерывно. Он ведёт список всех процессов и их состояний, и постоянно решает: какому процессу выделить процессорное время прямо сейчас.
Три состояния процесса
Каждый процесс в каждый момент времени находится в одном из трёх состояний:
| Состояние | Что это означает | Пример |
|---|---|---|
| Выполняется (Running) | Прямо сейчас использует процессорное ядро | Браузер отрисовывает страницу |
| Готов (Ready) | Мог бы выполняться, но ядро занято другим процессом | Музыкальный плеер ждёт своей очереди |
| Ожидает (Waiting / Blocked) | Не может выполняться, пока не произойдёт что-то внешнее | Программа ждёт ответа с жёсткого диска или из сети |
Состояние «ожидает» - ключевое для понимания эффективности многозадачности. Операции с диском в десятки тысяч раз медленнее работы процессора. Пока программа ждёт данные с диска, процессор мог бы сделать миллионы вычислений. Планировщик именно это и делает: как только процесс уходит в ожидание - немедленно отдаёт освободившееся ядро другому процессу из очереди «готов».
Квант времени и вытесняющая многозадачность
Но что, если программа ничего не ждёт - просто считает и считает без остановки? Например, перекодирует видео. Неужели она захватит весь процессор и заблокирует остальных?
Для этого существует понятие кванта времени (time slice). Планировщик даёт каждому процессу небольшой отрезок процессорного времени - обычно от 1 до 100 миллисекунд. Когда квант истекает, специальный аппаратный таймер посылает прерывание: «время вышло». Планировщик принудительно снимает текущий процесс с ядра, сохраняет его состояние и ставит на его место следующего в очереди. Это называется вытесняющая многозадачность (preemptive multitasking). Если вернуться к аналогии со звукорежиссёром: он не сам решает, когда переключить внимание. Над ухом у него звенит таймер каждые несколько секунд - и он обязан перейти к следующему микрофону, хочет того или нет.
Ни один процесс не может «захватить» процессор навсегда - планировщик всегда вернёт контроль. Именно поэтому бесконечный цикл в одной вкладке браузера не замораживает весь компьютер: через несколько миллисекунд квант заканчивается, и другие процессы получают своё.
Приоритеты: не все равны
Планировщик не просто раздаёт время по кругу. Каждый процесс имеет приоритет - число, определяющее, как часто он получает процессорное время. Системные процессы ядра имеют высший приоритет. Процессы с интерфейсом пользователя получают приоритет выше фоновых, потому что задержки в интерфейсе человек замечает мгновенно. Фоновые задачи - резервное копирование, индексирование поиска - намеренно получают низкий приоритет, чтобы не мешать работе. В Windows планировщик дополнительно даёт временный «буст» тому окну, которое сейчас в фокусе - именно поэтому активная программа всегда реагирует чуть быстрее остальных.
В Windows это видно в «Диспетчере задач» в колонке «Приоритет». В Linux аналогичный показатель называется nice (буквально «вежливость» - насколько процесс готов уступать другим).
🧵 Потоки: задачи внутри задачи
Процесс - изолированная среда. Но внутри одного процесса может быть несколько параллельных линий выполнения. Они называются потоками (threads).
Потоки живут внутри процесса и делят с ним память, открытые файлы и ресурсы. Но у каждого потока свой стек и свой счётчик команд - то есть каждый поток выполняет свои инструкции независимо.
| Процесс | Поток | |
|---|---|---|
| Изоляция памяти | Полная - другие процессы не видят его память | Нет - потоки одного процесса видят общую память |
| Создание | Дорого: ОС выделяет новое адресное пространство | Дёшево: копируется только стек и счётчик команд |
| Общение | Сложно: нужны специальные механизмы (сокеты, каналы, разделяемая память) | Просто: через общие переменные - но требует аккуратности |
| Катастрофа при ошибке | Только этот процесс | Может обрушить весь процесс |
Классический пример потоков - текстовый редактор. Один поток обрабатывает ввод с клавиатуры. Второй - автоматически сохраняет файл каждые пять минут. Третий - проверяет орфографию в фоновом режиме. Все три работают «одновременно», делят одни и те же данные (текст документа) и живут внутри одного процесса.
🔍 Как это выглядит изнутри: переключение контекста
Каждый раз, когда планировщик переключает процессор с одного процесса на другой, происходит переключение контекста (context switch). «Контекст» — это полное состояние процесса в данный момент: содержимое всех регистров процессора, указатель на текущую инструкцию, флаги состояния.
При переключении ОС делает три вещи:
1. Сохраняет контекст текущего процесса в специальную структуру в памяти - блок управления процессом (PCB, Process Control Block).
2. Выбирает следующий процесс из очереди готовых - по приоритету и другим критериям.
3. Восстанавливает контекст выбранного процесса: загружает его регистры обратно в процессор. Процессор продолжает выполнение ровно с того места, где в прошлый раз остановился.
Процесс при этом не знает, что его прерывали. С его точки зрения - он просто шёл и шёл вперёд. Это полная иллюзия непрерывного выполнения.
🛑 Зависший процесс: что происходит и что делать
Иногда процесс «зависает» - перестаёт отвечать. Почему это происходит и почему не нужно из-за этого перезагружать весь компьютер?
Процесс может зависнуть по нескольким причинам: бесконечный цикл в коде (программа считает и не может остановиться), дедлок между потоками, ожидание ресурса, который никогда не придёт, или просто ошибка в программе, которая привела её в неправильное состояние.
Ключевое: зависший процесс — это один изолированный процесс. Он не может «заразить» другие. ОС продолжает работать, другие программы продолжают работать. Достаточно завершить именно этот процесс.
| Операционная система | Как завершить зависший процесс |
|---|---|
| Windows | Ctrl+Shift+Esc → «Диспетчер задач» → правой кнопкой по процессу → «Снять задачу» |
| macOS | Cmd+Option+Esc → «Принудительное завершение» - или через «Монитор активности» |
| Linux | kill [PID] или killall [имя программы] в терминале; либо системный монитор |
Когда вы «снимаете задачу», ОС посылает процессу сигнал завершения. Если процесс не реагирует - посылает принудительный сигнал уничтожения: ядро немедленно освобождает всю память и ресурсы этого процесса. Чисто. Без последствий для остальных.
📊 Сколько процессов нормально?
Открыв «Диспетчер задач» или «Монитор активности», многие удивляются: 150, 200, 300 процессов - при том что открыт только браузер. Это нормально?
Да. Большинство из них - системные службы ОС, которые большую часть времени находятся в состоянии «ожидает» и не потребляют ни процессорного времени, ни заметного объёма памяти. Каждый занимает немного памяти для своей структуры, но реальную нагрузку создают лишь те, что активно что-то делают.
| Что потребляет ресурсы по-настоящему | Что почти не потребляет |
|---|---|
| Браузер с 20 вкладками | Служба обновления, которая проверяет раз в час |
| Антивирус при активной проверке | Служба печати, когда принтер не используется |
| Видеоредактор при рендеринге | Системные демоны в состоянии ожидания |
| Игра | Менеджер буфера обмена в простое |
🔄 Итог: что происходит прямо сейчас
Пока вы дочитываете эту статью, планировщик вашей ОС уже миллионы раз переключил процессор между сотнями процессов. Каждый раз - сохранял контекст, выбирал следующего, восстанавливал. Каждый процесс уверен, что работает непрерывно. Ни один из них не знает о других.
Это одна из самых элегантных иллюзий в программировании: сотни программ, каждая из которых убеждена, что она одна в системе. И именно эту иллюзию - но уже применительно к памяти - разберём в следующей статье. Каждый процесс не только думает, что занимает весь процессор, но и думает, что занимает всю память. Как ОС делает это одновременно для всех - тема статьи о виртуальной памяти.
© 2008–2026 ANY.BY - ремонт компьютеров и ноутбуков в Барановичах. Использование материалов сайта возможно с письменного разрешения.
📍 Привезите технику в сервис ANY.BY — диагностика бесплатно, работаем без выходных.
🚗 Не можете приехать — вызовите мастера на дом.
🛒 Ноутбуки, компьютеры и комплектующие — магазин magaz.by.
📞 +375 (33) 323-70-00 (МТС) | +375 (29) 323-70-00 (A1)
✉️ Telegram | Viber
📞 Мы на связи для Вас:
| Пн–Пт | 10:00–19:00 |
| Суббота | 11:00–17:00 |
| Воскресенье | 12:00–16:00 |
Ремонтировал здесь ноутбук, всё сделали отлично. Рекомендую этот сервис.
Благодарю за качественный ремонт. Осталась довольна результатом и ценой.
Спасибо за работу, обращалась неоднократно, всегда довольна результатом. Мастер объясняет все доступно, все нюансы в процессе ремонта оговариваются. Рекомендую
Хороший сервис по ремонту ПК. Качественно, быстро и с гарантией.
Очень вежливый сервис. Починили компьютер в день обращения. Цены очень приятные. Большое спасибо!
Всё супер, быстро и профессионально. Рекомендую!
Рекомендую! Отличный подход к клиенту, всё честно и прозрачно. Делал апгрейд старого ПК, теперь всё летает.
Не единожды сдавал ПК на апгрейд — всегда доволен результатом. Мастер всегда поможет и подскажет, не только по ремонту. В своём окружении всегда рекомендую Any.by.
Ремонтировал ноутбук, сделали быстро и качественно. Спасибо!
Качественно и на совесть отремонтировали ноутбук. Объяснили все нюансы от А до Я. Адекватные цены. Приятный бонус — именной брелок из дерева в подарок) рекомендую!
Цикл статей ANY.BY - от транзистора до интернета.
Простым языком, без лишней теории.