ыыыыыыы (26.11.2013 19:13, просмотров: 1) ответил fk0 на Причём тут ассемблер. Очередь -- это скорей binary heap уже отсортированный по приоритету. И нужное где-то в середине, поиск за O(N) (или ещё как-то по критерию адреса упорядочивать дополнительно -- затраты на каждый чих в два-три раза выше,
в ecos (с которой я имел больший опыт) хорошо объясняется как делать жесткий реалтайм с комфортом - смысл в том, что для разных классов задач (в одном приложении) доступны разные API сервисов синхронизации: ISR имеет жесткие ограничения, DSR имеет более сложное, но все-равно упрощенное шедулирование, а для не real-time задач все "как в юниксе", ну а вообще все это делается через списки (так по-моему и пишет автор uC/OS) и перебирать все задачи и все "семафоры" при каждой смене контекста не нужно. да, при проектировании софта нужно думать, как всем этим пользоваться, но не бывает такого, чтобы сорцы для экзешника в пару мегов проектировались с 0, поэтому представление о том "как оно синхронизировалось раньше" обычно есть. ну и да - оверхед есть - вот меня принудили сделать один проект на RTEMS - сколько не трахались, понизить оверхед до >5% так и не получилось