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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> MMU - сильно ли надо?
Dimchansky
сообщение May 12 2006, 08:29
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Люди добрые,

подскажите, насколько нужен MMU, если хотелось бы писать программу на нормальном C++ (не EC++) и использовать простые выделения памяти типа new delete?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 12 2006, 09:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Совершенно не нужен, если не планируется использовать Linux или WinCE.
Go to the top of the page
 
+Quote Post
Dimchansky
сообщение May 12 2006, 09:08
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Цитата(aaarrr @ May 12 2006, 10:03) *
Совершенно не нужен, если не планируется использовать Linux или WinCE.

Linux, WinCE не нужен.
Т.е., если будет подключена внешняя SDRAM, к примеру, то я смогу спокойно писать на С++ что-то типа:
TMyArray* arr = new TMyArray(1000);
...
delete arr;
и всё будет спокойно выделяться во внешней памяти и освобождаться (при соответствующих настройках проекта)?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 12 2006, 09:36
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, для этого достаточно просто heap правильно прописать.
Go to the top of the page
 
+Quote Post
Dimchansky
сообщение May 12 2006, 09:36
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Цитата(aaarrr @ May 12 2006, 10:36) *
Да, для этого достаточно просто heap правильно прописать.


Понял. Спасибо.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 12 2006, 10:11
Сообщение #6


Гуру
******

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



Цитата(Dimchansky @ May 12 2006, 12:08) *
Т.е., если будет подключена внешняя SDRAM, к примеру, то я смогу спокойно писать на С++ что-то типа:
TMyArray* arr = new TMyArray(1000);
...
delete arr;
и всё будет спокойно выделяться во внешней памяти и освобождаться (при соответствующих настройках проекта)?

Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dimchansky
сообщение May 12 2006, 10:30
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Цитата(zltigo @ May 12 2006, 11:11) *
Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения....


Как-то сразу об этом не подумал..
Т.е. в случае чего прийдется писать свой аллокатор для мелких объектов по типу, как у Александреску, или просто разумно использовать new.
Go to the top of the page
 
+Quote Post
makc
сообщение May 12 2006, 10:59
Сообщение #8


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(zltigo @ May 12 2006, 14:11) *
Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения....


Если мне не изменяет память, то new/delete работают через стандартные аллокаторы, которые основаны на вызовах malloc/free, т.е. фрагментация памяти будет зависеть от того, как эти функции реализованы в стандартной библиотеке. Ну или на худой конец можно будет просто написать свои аллокаторы. wink.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 12 2006, 11:38
Сообщение #9


Гуру
******

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



Цитата(makc @ May 12 2006, 13:59) *
Если мне не изменяет память, то new/delete работают через стандартные аллокаторы, которые основаны на вызовах malloc/free

Несомнено и с точки зрения дефрагментации использование malloc не лучше.
А вот то, что из new не предусмотрен возврат в случае отсутствия памяти, это дополнительный
прикол :-)
Цитата
Ну или на худой конец можно будет просто написать свои аллокаторы. wink.gif

Слишком мало смайликов на мой взгляд добавлено....
И как быть в этом случае с бесполезностью MMU???


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dimchansky
сообщение May 12 2006, 11:43
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Цитата(zltigo @ May 12 2006, 12:38) *
Слишком мало смайликов на мой взгляд добавлено....
И как быть в этом случае с бесполезностью MMU???

Извините, что вмешиваюсь в интеллектуальную беседу. smile.gif
А с MMU не было бы проблем c фрагментацией памяти?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 12 2006, 11:52
Сообщение #11


Гуру
******

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



Цитата(Dimchansky @ May 12 2006, 14:43) *
А с MMU не было бы проблем c фрагментацией памяти?

Без дефрагментатора - аналогичные.
Но ведь дефрагментатор предлагалось писать? Ну и как без аппаратной поддержки реализовать "перемещение" памяти да так, что-бы тот, кто этой памятью пользуется не догадался об этом?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dimchansky
сообщение May 12 2006, 11:59
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Цитата(zltigo @ May 12 2006, 12:52) *
Без дефрагментатора - аналогичные.
Но ведь дефрагментатор предлагалось писать? Ну и как без аппаратной поддержки реализовать "перемещение" памяти да так, что-бы тот, кто этой памятью пользуется не догадался об этом?


Я просто не очень понял слова "бесполезностью MMU".. Просто я не до конца понимаю силу слов MMU.
А без аппаратной поддержки перемещение, наверное, можно было бы софтово обеспечить: каждый класc в обязательном порядке наследуется от какого-нибудь THeapObject, который внутри себя хранил бы уже реальный указатель, число ссылок и т.п., а про new и указатели забываем совсем. smile.gif
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 12 2006, 12:12
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(aaarrr @ May 12 2006, 12:03) *
Совершенно не нужен, если не планируется использовать Linux или WinCE.


есть uClinux, он именно для работы без MMU и придуман.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 12 2006, 12:14
Сообщение #14


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(zltigo @ May 12 2006, 18:38) *
А вот то, что из new не предусмотрен возврат в случае отсутствия памяти, это дополнительный
прикол :-)

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

Для ембеддед, ессно, использовать стандартные аллокаторы, имхо, не самая хорошая идея, лучше уж написать свой простенький менеджер памяти на основе блоков фиксированного размера. Тут, по крайней мере, не сложно обеспечить предсказуемое поведение.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
makc
сообщение May 12 2006, 12:18
Сообщение #15


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(zltigo @ May 12 2006, 15:38) *
Цитата

Ну или на худой конец можно будет просто написать свои аллокаторы. wink.gif

Слишком мало смайликов на мой взгляд добавлено....
И как быть в этом случае с бесполезностью MMU???


MMU в этом случае может очень даже пригодиться, если хочется сделать "дефрагментации" малой кровью. Но если отказаться в рамках С++ от работы с указателями и управление динамической памятью сделать с помощью собственнаручно созданных аллокаторов (которые могут кроме всего прочего реализовывать прозрачную дефрагментацию и сборку мусора), то можно будет обойтись и без MMU.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post

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

 


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


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