|
MMU - сильно ли надо? |
|
|
|
May 12 2006, 09:08
|
Участник

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

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

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

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

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
May 12 2006, 10:30
|
Участник

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

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

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

|
Цитата(zltigo @ May 12 2006, 14:11)  Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения.... Если мне не изменяет память, то new/delete работают через стандартные аллокаторы, которые основаны на вызовах malloc/free, т.е. фрагментация памяти будет зависеть от того, как эти функции реализованы в стандартной библиотеке. Ну или на худой конец можно будет просто написать свои аллокаторы.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
May 12 2006, 11:38
|

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

|
Цитата(makc @ May 12 2006, 13:59)  Если мне не изменяет память, то new/delete работают через стандартные аллокаторы, которые основаны на вызовах malloc/free Несомнено и с точки зрения дефрагментации использование malloc не лучше. А вот то, что из new не предусмотрен возврат в случае отсутствия памяти, это дополнительный прикол :-) Цитата Ну или на худой конец можно будет просто написать свои аллокаторы.  Слишком мало смайликов на мой взгляд добавлено.... И как быть в этом случае с бесполезностью MMU???
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 12 2006, 11:43
|
Участник

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

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

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

|
Цитата(zltigo @ May 12 2006, 12:52)  Без дефрагментатора - аналогичные. Но ведь дефрагментатор предлагалось писать? Ну и как без аппаратной поддержки реализовать "перемещение" памяти да так, что-бы тот, кто этой памятью пользуется не догадался об этом? Я просто не очень понял слова "бесполезностью MMU".. Просто я не до конца понимаю силу слов MMU. А без аппаратной поддержки перемещение, наверное, можно было бы софтово обеспечить: каждый класc в обязательном порядке наследуется от какого-нибудь THeapObject, который внутри себя хранил бы уже реальный указатель, число ссылок и т.п., а про new и указатели забываем совсем.
|
|
|
|
|
May 12 2006, 12:14
|

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

|
Цитата(zltigo @ May 12 2006, 18:38)  А вот то, что из new не предусмотрен возврат в случае отсутствия памяти, это дополнительный прикол :-) Зато оно исключение кидает. Это в случае ПКшных (т.е. наиболее массовых) программ удобнее, чем проверять каждый раз возвращаемое значение. Для ембеддед, ессно, использовать стандартные аллокаторы, имхо, не самая хорошая идея, лучше уж написать свой простенький менеджер памяти на основе блоков фиксированного размера. Тут, по крайней мере, не сложно обеспечить предсказуемое поведение.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 12 2006, 12:18
|

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

|
Цитата(zltigo @ May 12 2006, 15:38)  Цитата Ну или на худой конец можно будет просто написать свои аллокаторы.  Слишком мало смайликов на мой взгляд добавлено.... И как быть в этом случае с бесполезностью MMU??? MMU в этом случае может очень даже пригодиться, если хочется сделать "дефрагментации" малой кровью. Но если отказаться в рамках С++ от работы с указателями и управление динамической памятью сделать с помощью собственнаручно созданных аллокаторов (которые могут кроме всего прочего реализовывать прозрачную дефрагментацию и сборку мусора), то можно будет обойтись и без MMU.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|