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

 
 
> двоичные семафоры для FreeRTOS, двоичные семафоры для FreeRTOS реализованы неэффективно и жрут RAM
ddiimmaa
сообщение Dec 12 2008, 16:47
Сообщение #1


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



В FreeRTOS работа двоичного семафора реализована в виде макросов, которые вызвают функции очереди при создании семафора, на самом деле вместо семафора создаётся очередь в 1 элемент размером в 0 байт.

Другими словамии Двоичный мемафор -- очередь 1 элементx0 байт

В итоге получаеться что почти все элементы структуры Очереди не используются: из двух списков (списки читателей и писателей) используеться только один. Переменные "Счётчик элементов" и "Размер элемента" всегда заведомо равны 1 и 0, так зачем их хранить в памяти????

Не знаю как создатель ОС -- Ричард Барри, но по моему тратить такое ценный ресурс как ОЗУ на двоичный семафор расточительно.

В связи с этим я написал свой вариант Двоичных семафоров
Он выложен на http://freertos.narod.ru. В нём в качестве двоичного семафора используеться толко Один список то есть
typedef xList Semph,
что позволяет экономить на памяти, и выигрывает в скорости. Особенно это может быть применено в системах где не нужны очереди сообщений, где нужны только семафоры.

Если кого заинтересовало прошу скачивать и пользоваться. Если это чудо зароботает у кого ещё можно и написать что-нибудь тут!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Terminator
сообщение Feb 5 2010, 05:16
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Пример выше и с семафором работать не будет, т.е. гипотетическая ситуация также приведёт к остановленной задаче.
Как же тогда правильно разрулить подобную ситуацию?
Go to the top of the page
 
+Quote Post



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

 


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


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