Зарегистрируйтесь, чтобы продолжить обучение

Управление и планирование Основы ЭВМ

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

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

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

На практике это легко увидеть. В Windows при прослушивании музыки и одновременной распаковке архива плеер получает более высокий приоритет, а архиватор работает в обычном режиме. Музыка играет ровно, архиватор загружает процессор, но не мешает звуку. В «Диспетчере задач» на вкладке «Подробности» можно открыть контекстное меню и изменить приоритет. Если поставить архиватору «Высокий приоритет», музыка начнёт заикаться. Если назначить «Низкий», она будет звучать без сбоев, а архиватор станет работать медленнее. В Linux то же самое можно проверить с помощью nice и renice. Если запустить архиватор с nice=15, он получит низкий приоритет и будет выполняться только в паузы, а плеер с nice=0 продолжит звучать без задержек.

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

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff