Size: a a a

pro.osdev - os development

2021 October 06

d

disba1ancer in pro.osdev - os development
что за бамп?
источник

BD

Berkus Decker in pro.osdev - os development
alloc(size) { if (top >= bottom + size) { top -= size; return top } else { EALLOC } }

весь аллокатор
источник

d

disba1ancer in pro.osdev - os development
просто с продвиганием указателя, у меня есть такой, использую при первичной инициализации региона
источник

d

disba1ancer in pro.osdev - os development
чтобы служебные данные разместить, которые не хранятся в свободных блоках
источник

BD

Berkus Decker in pro.osdev - os development
ну да, на самом старте он удобнее всего
источник

d

disba1ancer in pro.osdev - os development
у меня после инициализации все выделения из остатка после пользования этим аллокатором идут, для отдельно взятого региона конечно
источник

d

disba1ancer in pro.osdev - os development
ну а что делать если аллокатор работает только с переданным при его инициализации регионом и всё? возможность инициализировать ещё один аллокатор имеется, перед выделением нужно передать указатель на управляющую структуру аллокатора для конкретного региона, потому можем иметь несколько инстансов аллокатора, по одному для каждого региона, вопрос лишь в том как сделать аллокатор уровнем выше, который попытается выделить память через каждый из этих аллокаторов (разумеется если с первого раза выделится, то по остальным регионам уже не бегаем)
источник

BD

Berkus Decker in pro.osdev - os development
если ты уже много регионов хендлишь то тебе надо переходить от бамп аллокатора к чему-то посущественнее
источник

d

disba1ancer in pro.osdev - os development
у меня основной не бамп аллокатор, бамп только при инициализации идёт, когда инициализация окончена, всё свободное пространство региона не задействованное бампом, используется инициализированным аллокатором
источник

BD

Berkus Decker in pro.osdev - os development
тогда я совершенное не понимаю про что ты написал в длинной телеге выше
источник

BD

Berkus Decker in pro.osdev - os development
делать иерархию аллокаторов бессмысленно, один аллокатор может работать с несколькими регионами (он это и делает)
источник

d

disba1ancer in pro.osdev - os development
в аллокатор который у меня в итоге получается не предназначен, для работы с несколькими регионами сразу, для каждого региона нужно инициализировать по ещё одному аллокатору
источник

BD

Berkus Decker in pro.osdev - os development
переделай
источник

d

disba1ancer in pro.osdev - os development
а как?
источник

BD

Berkus Decker in pro.osdev - os development
покажи что у тебя за аллокатор
источник

d

disba1ancer in pro.osdev - os development
источник

d

disba1ancer in pro.osdev - os development
я подправил, добавил ссылку на конкретную строку
источник

BD

Berkus Decker in pro.osdev - os development
а, ну с бадди аллокатором да, так просто не выйдет, сделай для простоты иерархический пока
источник

d

disba1ancer in pro.osdev - os development
т.е. иерархию из аллокаторов?
источник

d

disba1ancer in pro.osdev - os development
вот в том и вопрос как организовать второй уровень этой иерархии, просто связный список впаять или мб какой-то массив с метаинфой, чтобы быстрее подбирать регион
источник