ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
729550 Топик полностью
Evgeny_CD, Архитектор (19.01.2017 19:05 - 19:31, просмотров: 63) ответил Николай Коровин на У меня была сугубо утилитарная мысль, не претендующая на фундаментальный размах, о том, что мы можем по-другому работать с памятью, если уж начинаем мир с нуля. Сделать две оптимизации указателей — подвижные и неподвижные. Неподвижные программа
Надо разделять память данных и память кода. Лично я считаю, что во встраиваемой системе набор кода не должен меняться после старта. Вообще. И в иделе код встраиваемой системы должен состоять из трех файлов - минимума асмовых вставок, хидеров и мегафайла со всем С++ кодом. Так и GCC будет поляна для оптимизации. Но при работе системы не весь код стартует, и не весь сразу стартует. Вполне могут быть участки кода, которые не вызвались никогда - ошибки не случились, редкие данные из IO не пришли. В части память данных динамическая память важна, но ее использовать надо с умом. Предложенный механизм перезаписи указателей в программе при дефрагментации памяти - это полный ПЭ. RT будет хуже самых плохих нынешних реализаций, ошибок может быть нереально много. Вооще я считаю, что RT и динамическая память совместимы при очень малых дозах динамической памяти. Пример. Есть обработчик прерывания, есть пост-обработчик, и есть высокоуровневый код. Обработчик аллокирует память из выделенного ему специалиного буфера, простейшими механизмами. Кольцевой буфер или типа того. Пост-обработчик пакует данные в блоки, удобные для выосокоуровневой обработки (PPP разбирает до IP пакетов, например), и вызывает высокоуровневую процедуру по мере готовности. Также чистит память буфера обработчик прерывания, и обращаеся k malloc - чтобы поддерживать запас буферов для обработчика прерываний. В части медленных процедур ничего лучше дефрагментатора на основе MMU пока никто не придумал.