📌 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 низкоприоритетных задач
 - Сложность при отладке гонок и подвисаний