📌 Scheduler
Scheduler — компонент OS (обычно в Kernel), отвечающий за выбор потока или процесса, которому будет выделен CPU в данный момент. Основной механизм управления многозадачностью.
🧠 Как работает
Scheduler выполняет следующие функции:
- Поддерживает очереди готовых к выполнению задач
- Выбирает следующую задачу по определённому алгоритму
- Производит переключение контекста (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 низкоприоритетных задач
- Сложность при отладке гонок и подвисаний