Я с нетерпением жду понимания того, как динамическое управление памятью работает на низком уровне в системах GNU/Linux (, также как работает ptmalloc ).
Конечно, я читал код, но у меня есть много сомнений. Я более-менее разбираюсь в структурах данных, но у меня много утечек информации!
Мой вопрос в том, знает ли кто-нибудь о каком-либо ресурсе, подробно объясняющем реализацию. Например, я читал такие статьи, как «Понимание кучи путем ее разбиения» или серию «Malloc Malleficarum» и серию постов -. Они отлично справляются со своей задачей, но, конечно, они больше сосредоточены на эксплуатации, чем на объяснении многих деталей реализации.
Если вы не знаете ни о каком ресурсе,вот некоторые из моих вопросов.
Что такое настоящая арена? В коде переменной ar _ptr from heap _info struct есть комментарий «арена для этой кучи», поэтому арена не может быть кучей (как везде говорят ).
Почему в структуре heap _info нет указателя next, а есть указатель prev ? Это из-за главной _арены ? А что такое главная _арена ?
Каждая куча _информационная структура может иметь более одной арены (, указывающей на разные malloc _состояния структуры )?
Когда создаются новостные арены и какой код их обрабатывает? Я читал, что новые арены создаются, когда арена, запрошенная для хранения данных, блокируется (, потому что с ней работает процесс или поток процесса ), и я также читал, что у каждого потока процесса есть своя арена. Здесь важно знать, какой код обрабатывает эти ситуации .
Я также не понимаю, когда люди говорят, что все операции с памятью происходят из верхнего или самого дикого фрагмента. Вы знаете, где я могу найти этот код?
Кстати, я не хочу углубляться в детали мьютекса.
Я просматриваю реализацию ptmalloc в glibc 2.12.1. Я хотел бы сделать несколько диаграмм об общей структуре всего, поэтому мне нужно понять эти вещи!
Спасибо.