- Не пытайтесь повысить быстродействие уже существующих RTOS путем доработки их исходного кода. Код RTOS обычно небольшой по размеру, но требует тщательной проверки на десятках разнообразных задач. Не хватает быстродействия - тщательней конструируйте проект ( число и назначение задач, их приоритет, размер блоков для передачи данных между задачами, etc.)
- Не пытайтесь придумывать свои синхронизационные примитивы. На практике все задачи синхронизации можно успешно решить уже существующими семафорами, очередями, etc.
- Не используйте malloc(), используйте fixed-sized blocks memory allocators. Очень мало аппликаций, где malloc() действительно нужен (GUI).
- Тщательно планируйте число задач и их приоритеты, избегайте sharing ресурсов между задачами самого высокого и самого низкого приоритетов.
- При обмене данными между задачами через очереди для повышения быстродействия пересылайте данные блоками, а не байтами. Элементом очереди при этом будет указатель на блок памяти, полученный от fixed-sized blocks memory allocators.
- Избегайте использование синхронизационных функций RTOS с таймаутами. Хорошо сконструированной системе очень редко нужны таймауты, отличные от INFINITE. Длинные временные задержки можно получать вызовом системных функций типа Sleep().
- Уменьшайте,насколько возможно, число прерываний в системе.
|