На проходившей в сентябре конференции Real-Time Linux Workshop достаточно активно обсуждался
вопрос добавления в ядро Linux планировщика режима реального времени.
Такая возможность могла бы быть реализована с использованием уже
отработанного в других RT-системах алгоритма приоритезации задач с
более ранним временем завершения (EDF, Earliest Deadline First). В
настоящее время для ядра Linux разработана экспериментальная версия
планировщика EDF — SCHED_DEADLINE, которая ранее была известна как
SCHED_EDF.
Необходимость планировщика реального времени в Linux обусловлена
теми ограничениями, которые привносят существующие алгоритмы
диспетчеризации процессорного времени. Среди них можно выделить два
основных:
- Существующие решения не способны гарантировать
необходимое время выполнения запущенной задачи. Например, если
условиями задано, что приложение должно выполняться ровно 20 мсек в
интервале 100 мсек, то имеющимися в ядре средствами этого добиться
нельзя.
- Переключение между задачами осуществляется на не
детерминистической основе и зависит от общего количества обслуживаемых
процессов. Т.к. в ядре нет механизмов жесткой привязки времени начала
выполнения задачи, она может выполняться с произвольной задержкой, или
в случае возникшей ошибки задержать выполнение следующей задачи.
Данные ограничения не позволяют использовать Linux в системах, где
необходим дискретный контроль параметров или другие функции, жестко
привязанные ко времени. Более того, без RT-планировщика невозможно
заранее предсказать поведение проектируемой системы. Все это негативно
сказывается на проникновении Linux в сферу индустриальной электроники и
промышленных систем автоматики.
Проект SCHED_DEADLINE, хотя все еще находится в
экспериментальной фазе, уже может выполнять типичные задачи
полнофункциональной системы реального времени. Он является частью более
глобального проекта ACTORS, финансируемого Европейской Комиссией. Более подробно о новом планировщике и примерах использования можно узнать на его домашней странице. Источник
|