Основы ЭВМ

Теория: Управление и планирование

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

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

Оставалась ещё одна задача — расставить приоритеты. Музыка и видео должны идти без задержек, а архивация или проверка текста могут подождать. Поэтому интерактивные процессы получают высокий приоритет и чаще получают процессор. Фоновые задачи выполняются в паузах. Планировщик меняет приоритеты на ходу: если процесс долго ждёт, его приоритет повышается, если он слишком активно грузит CPU, его понижают. В разных системах используются разные политики. В Linux это CFS, который делит процессорное время справедливо, и отдельные классы для реального времени — SCHED_FIFO и SCHED_RR. В Windows процессы тоже разделены на классы, и приоритеты работают похожим образом.

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

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

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

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

Вместе эти три механизма — прерывания, таймер и приоритеты — делают возможной многозадачность. Контроллер прерываний обеспечивает реакцию на события, таймер делит процессорное время на равные части, приоритеты определяют порядок задач. Всё это работает в связке и обеспечивает отзывчивость операционной системы. Для администрирования и эксплуатации добавляются инструменты управления: маскирование прерываний, команды nice, renice и chrt в Linux, настройка приоритетов в Windows, а в контейнерах и виртуальных машинах — cgroups и квоты, которые ограничивают использование CPU. Всё это позволяет тонко управлять нагрузкой и гарантировать, что важные процессы получают ресурсы вовремя.

Рекомендуемые программы

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845