📌 Scheduler

Scheduler — компонент OS (обычно в Kernel), отвечающий за выбор потока или процесса, которому будет выделен CPU в данный момент. Основной механизм управления многозадачностью.

🧠 Как работает

Scheduler выполняет следующие функции:

  1. Поддерживает очереди готовых к выполнению задач
  2. Выбирает следующую задачу по определённому алгоритму
  3. Производит переключение контекста (context switch)

Ключевые параметры:

  • Приоритет (static/dynamic)
  • Время последнего исполнения
  • Время ожидания
  • Тип задачи (интерактивная, фоновая, реального времени)

Алгоритмы:

  • Round-Robin — по очереди с квантами
  • SJF / SRTF — кратчайшая задача (предсказание)
  • O(1) — константное планирование (старые Linux ядра)
  • CFS (Completely Fair Scheduler) — текущий в Linux
  • EDF (Earliest Deadline First) — для RTOS
  • Priority Scheduling — с поддержкой инверсии

Контекст переключается с помощью структуры Task Control Block и требует сохранения регистров, FPU/XMM, стека, состояния MMU и т.д.

⚙️ Где применяется

КонтекстНазначение
Linux KernelПланирование потоков и процессов
RTOSГарантированные задержки (Hard/Soft RT)
HypervisorПланирование виртуальных CPU
GPU DriverВыделение очередей/ресурсов под шейдеры

✅ Преимущества

  • Эффективное использование CPU
  • Поддержка многозадачности и приоритетов
  • Возможность адаптации под разные профили задач

❌ Недостатки

  • Непредсказуемость задержек без RT-гарантий
  • Starvation низкоприоритетных задач
  • Сложность при отладке гонок и подвисаний