Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Критические замечания...? к чему? 16.06.01 23:11 Число просмотров: 697
Автор: Delimiter Статус: Незарегистрированный пользователь Отредактировано 16.06.01 23:40 Количество правок: 1
|
> Связанные списки не подходят даже не по этой причине. При > расширении списка надо выделять память под новый элемент, а > этого делать нельзя по условиям задачи (new делать > запрещено). Значит память под элементы списка должна > выделяться при инициализации менеджера, т.е. создается > таблица в памяти, где содержится вся инфа о куче. И уже в > этой таблице создаются/изменяются/удаляются элементы, > которые описывают блоки памяти. Кстати, из-за того, что > размер элемента таблицы фиксированная величина, можно > попробовать поиск/удаление/изм >
или виртуалить на диск
насколько я знаю это была одна из предпосылок рождения МАСТДАЯ
:))
> Что касается "сборки мусора", то эта проблема достаточно > серьезная, в Винде этим занимается специальный поток с > приоритетом Idle, в момент простоя системы он просматривает > описатели кучи и сливает незанятые участки памяти в один > большой кусок. Но винде проще, так как ей достаточно > поменять базовые адреса в GDT, а вот тебе так сделать не > удастся :( Отдельным потоком это сделано именно по > описанным тобой причинам: гораздо быстрее выделить блок > памяти в новой странице и потом неспеша в момент простоя > собрать эти блоки в одну кучу, чем искать подходящий по > размеру блок в уже фрагментированной куче во время > выполнения приложения. > во первых что такое "момент простоя" для менеджера памяти уж
не предлагаешь ли ты писать написать супер-метод который будет
сообщать менеджеру о состоянии других процесов :))
во вторых метод первого встречного будет превосходить (среднестат)
метод полного прохода в 2 раза (my sample)
альтернатива "cборке мусора"- упорядочение в пределах двух
соседних
(будет давать выигрыш во времени)
можно сделать МОДЕЛЯТОР :))
> Здесь звучало предложение о виртуальных указателях - тоже > не пойдет. Приложение, получив от менеджера виртуальный > указатель на выделенный блок памяти, наверняка захочет с > этим указателем что-нибудь сделать - записать в эту память > данные или что-то в этом роде. Аппликация, скорее всего, > слетит с ошибкой "Access violation" по вполне понятным > причинам.
ты действительно прав....если ты не контролируешь get/set
операции ...(а делать ты это будешь обязан ....или получишь
неверное значение указателя) :))
а далее все как по маслу ....блокируешь на время доступ к
перемещаемому блоку далее корректируешь таблицу...:))
> > Возможно, есть еще какие-нибудь "нельзя", но и здесь почва > для больших размышлений.
|
|
|