Описание кода реализации ptmalloc

Я с нетерпением жду понимания того, как динамическое управление памятью работает на низком уровне в системах GNU/Linux (, также как работает ptmalloc ).

Конечно, я читал код, но у меня есть много сомнений. Я более-менее разбираюсь в структурах данных, но у меня много утечек информации!

Мой вопрос в том, знает ли кто-нибудь о каком-либо ресурсе, подробно объясняющем реализацию. Например, я читал такие статьи, как «Понимание кучи путем ее разбиения» или серию «Malloc Malleficarum» и серию постов -. Они отлично справляются со своей задачей, но, конечно, они больше сосредоточены на эксплуатации, чем на объяснении многих деталей реализации.

Если вы не знаете ни о каком ресурсе,вот некоторые из моих вопросов.

  • Что такое настоящая арена? В коде переменной ar _ptr from heap _info struct есть комментарий «арена для этой кучи», поэтому арена не может быть кучей (как везде говорят ).

  • Почему в структуре heap _info нет указателя next, а есть указатель prev ? Это из-за главной _арены ? А что такое главная _арена ?

  • Каждая куча _информационная структура может иметь более одной арены (, указывающей на разные malloc _состояния структуры )?

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

  • Я также не понимаю, когда люди говорят, что все операции с памятью происходят из верхнего или самого дикого фрагмента. Вы знаете, где я могу найти этот код?

Кстати, я не хочу углубляться в детали мьютекса.

Я просматриваю реализацию ptmalloc в glibc 2.12.1. Я хотел бы сделать несколько диаграмм об общей структуре всего, поэтому мне нужно понять эти вещи!

Спасибо.

16
задан newlog 11 July 2012 в 20:03
поделиться