ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
7 мая
157528 Топик полностью
Rst7 (26.05.2009 10:34, просмотров: 212) ответил Evgeny_CD на Изящная система управления памятью. [TLSF] (Two-Level Segregate Fit) Memory Allocator for Real-Time -> особенно интересна страница документации -->
О(1) - это хорошо. Но долго :) Я последнее время делаю так - собственно malloc тащит заранее заготовленные (с логарифмическим шагом размеров) кусочки из связанных списков. mfree - соответственно возращает куски в эти списки. Это требует мало того, что минимум расходов по времени, так еще и минимум времени нахождения в состоянии lock (удаление и добавление производится в начало списка, это 3-4 комманды, проще даже банально запрещать прерывания, нежели плясать с примитивами синхронизации). А самый низкоприоритетный процесс неспешно переносит из большой кучи кусочки в списки заготовленных (или наоборот) для поддержания некоторого запаса. Т.е. тормоза начнутся при резком увеличении потребления кусочков (когда их вдруг не хватит, и придется запускать полновесный malloc из большой и медленной кучи). Минимизация таких тормозов достигается правильным выбором запаса. С другой стороны, прикрутить сей аллокатор к большой куче - это будет знатно. Надо плотненько раскуриться алгоритмами. Спасибо за ссылку.