реклама на сайте
подробности

 
 
> Для начинающих пользователей RTOS, Навеяно чтением многих posts в различных конференциях
yuri_t
сообщение Aug 23 2006, 19:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



- Не пытайтесь повысить быстродействие уже существующих RTOS
путем доработки их исходного кода. Код RTOS обычно небольшой
по размеру, но требует тщательной проверки на десятках разнообразных
задач. Не хватает быстродействия - тщательней конструируйте проект
( число и назначение задач, их приоритет, размер блоков для передачи
данных между задачами, etc.)

- Не пытайтесь придумывать свои синхронизационные примитивы. На практике
все задачи синхронизации можно успешно решить уже существующими
семафорами, очередями, etc.

- Не используйте malloc(), используйте fixed-sized blocks memory allocators.
Очень мало аппликаций, где malloc() действительно нужен (GUI).

- Тщательно планируйте число задач и их приоритеты, избегайте sharing
ресурсов между задачами самого высокого и самого низкого приоритетов.

- При обмене данными между задачами через очереди для повышения
быстродействия пересылайте данные блоками, а не байтами. Элементом
очереди при этом будет указатель на блок памяти, полученный от fixed-sized
blocks memory allocators.

- Избегайте использование синхронизационных функций RTOS с таймаутами.
Хорошо сконструированной системе очень редко нужны таймауты,
отличные от INFINITE. Длинные временные задержки можно получать вызовом
системных функций типа Sleep().

- Уменьшайте,насколько возможно, число прерываний в системе.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Aug 23 2006, 20:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(yuri_t @ Aug 23 2006, 22:49) *
- Не пытайтесь повысить быстродействие уже существующих RTOS
...

Совершенно верно.
Цитата
- Не пытайтесь придумывать свои синхронизационные примитивы.
....

При условии, что "существующие" есть :-) и результат их работы позволяет удовлетворительно решить
поставленную задачу.
Цитата
- Не используйте malloc(), используйте fixed-sized blocks memory allocators.

Не совсем понял - это против использования менеджеров памяти вообще, или пусть будут,
но выделяют память солидными блоками, дабы не дефрагментировать "излишне"??
Менеджер памяти должен быть - ибо ее почти всегда не хватает :-( Ну а борьба с дефрагментацией - думать надо :-( при проектировании ....
Цитата
- Тщательно планируйте число задач и их приоритеты, избегайте sharing
ресурсов между задачами самого высокого и самого низкого приоритетов.

Само собой!
Цитата
- При обмене данными между задачами через очереди для повышения
быстродействия пересылайте данные блоками, а не байтами. Элементом
очереди при этом будет указатель на блок памяти, полученный от fixed-sized
blocks memory allocators.

Как вариант - да. Но опять от реализации зависит - приходилось очереди уже _сразу_ на указателях
на буфер из фиксированных блоков реализовавать, причем все на ASM c размерами степени двойки
и с расположением по красивым адресам - быстрее уже не сделать :-)
Цитата
- Избегайте использование синхронизационных функций RTOS с таймаутами.
Хорошо сконструированной системе очень редко нужны таймауты,
отличные от INFINITE.

Очень! зависит от реализации ядра и не всегда можно "хорошо сконструировать" систему ввиду того,
что далеко не все в руках творца, а определяется внешним миром.
Цитата
- Уменьшайте,насколько возможно, число прерываний в системе.

В качесте общей рекомендации типа "не плодить сущности" - да.


В общем это следует понимать, как настоятельные рекомендации по использованию Вашей системы и
"руководство к размышлению" перед использовании любой системы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 11:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016