Здравствуйте!
Думаю написать динамический планировщик типа EDF (Earliest Deadline First) для eCos.
Задача в большей степени учебная, но все же хотелось бы избежать лишних ошибок и услышать мнения специалистов по eCos-у.
На данный момент в eCos реализованы планировщики:
- Bitmap (32 уровня приоритета, на каждом уровне может находиться только один поток);
- многоуровневые очереди;
- лотерейный планировщик.
По-сути, все эти планировщики, если верить хотя бы этому:
http://ipm.kstu.ru/os/lec/4.php не предназначены для планирования задач реального времени (в первую очередь периодических задач, для которых точно известны времена выполнения, дедлайнов и периоды возникновения). На базе этих планировщиков можно реализовать только статические алгоритмы планирования, в которых приоритеты потоков будут жестко задаваться на уровне компиляции. Динамическое планирование там невозможно.
Попытки написать EDF в eCos уже были, причем довольно недавно..например, тут:
http://sourceware.org/ml/ecos-discuss/2010-01/msg00017.htmlтолько ничего путного, как я понял, у них не получилось.
Можно по 3-м направлениям работать:
- писать планировщик на базе уже существующего в eCos, например, MLQ;
- писать с нуля;
- оставить существующий планировщик и создать какую-либо надстройку (по аналогии
например, с тем же RTAI в Linux) для обслуживания задач РВ.
Третий варинат мне нравится больше всего, ведь останется какая-никакая совместимость.
Конкретные детали пока обдумываю, читаю про RTAI, Xenomai, KURT, смотрю, как у них сделано.
Может быть, посоветуете еще чего-нибудь?