В ядро Linux может быть включен диспетчер реального времени

На проходившей в сентябре конференции 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, финансируемого Европейской Комиссией. Более подробно о новом диспетчере и примерах использования можно узнать на его домашней страничке.

    ©  OpenNet