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

 
 
> Создание-удаление задач, Опять о старом
MiklPolikov
сообщение Nov 8 2015, 16:34
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Уже в который раз поднимаю тему динамического создания-удаления задач. Вот к чему пришёл:

Для того что бы это стабильно работало, стек у всех задач должен быть одного размера. Если он разный, то куча будет сегментироваться, и через какое-то время это приведёт к краху системы. Ни одна из стандартных схем выделения памяти не heap1 .... heap5 не реализует дефрагментацию кучи. Получается не очевидное сразу ограничение : "динамическое сознание и удаление требует одинаковый размер стека всех задач"


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Nov 8 2015, 19:08
Сообщение #2


Гуру
******

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



QUOTE (MiklPolikov @ Nov 8 2015, 18:34) *
Для того что бы это стабильно работало, стек у всех задач должен быть одного размера. Если он разный, то куча будет сегментироваться, и через какое-то время это приведёт к краху системы.

Или примено одного - не отличающегося более, чем вдвое. Ну и радикально проблема решается тем, что при проектировании системы есть проход через фазу кода все "временые" задачи убиты. Ведь они на то и временые что-бы не сущесвовать сколь-нибудь долго, иначе незачем их прибивать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Nov 8 2015, 21:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(zltigo @ Nov 8 2015, 22:08) *
Ну и радикально проблема решается тем, что при проектировании системы есть проход через фазу кода все "временые" задачи убиты. Ведь они на то и временые что-бы не сущесвовать сколь-нибудь долго, иначе незачем их прибивать.


Как это решит проблему, если все стандартные системы выделения памяти heap1...heap5 не умеют дефрагментировать кучу, т.е. не умеют склеивать стоящие рядом пустые куски кучи ? Ни чем не занятая куча так и останется разбита на куски.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 9 2015, 06:50
Сообщение #4


Гуру
******

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



QUOTE (MiklPolikov @ Nov 8 2015, 23:15) *
Как это решит проблему, если все стандартные системы выделения памяти heap1...heap5...

Почти первое, что я сделал во FreeRTOS много лет назад, это похерил то уродство, что было в нем менеджером памяти. Так что там дальше городили до heap5 мне неведомо, но нет нималейших причин зачем-то пытаться использовать негодные вещи - ничего не мешает иметь и склеивание и хоть сколь-нибудь разумные алгоритмы поиска свободного блока. Свой менеджер памяти на форуме выкладывал. Он и ВСЮ оставшуюся память сам забирает под распределение и блоки склеивает...


--------------------
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 Текстовая версия Сейчас: 30th July 2025 - 18:13
Рейтинг@Mail.ru


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