>> |
No.27964
Файл: 88124045_p0.jpg -(1740 KB, 1332x1800, 88124045_p0.jpg)
>>27824
Я переделал менеджер памяти до предположительно идеального состояния, ТЕПЕРЬ-ТО ЗАЖИВЁМ:
https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/694 — это во многом просто переписывает старый, чтобы я мог вносить дальнейшие изменения так, как будто он мой,
https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/994 — это добавляет пробрасывание достаточно больших запросов напрямую функциям ОС, мимо всей остальной механики менеджера (ну почти; заголовок всё-таки нужен), как это обычно и делают, чтобы, если ты выделил 10 Мб, выделил ещё 1 Кб, которые разместились в том же блоке, и освободил изначальные 10 Мб, этот гигантский блок не оставался висеть из-за этого килобайта. Феномен висения 1 Кб в N-мегабайтном блоке, конечно, никуда не девается и вообще фундаментально неустраним в системе без перемещающего GC, но это хотя бы ограничивает N сверху,
https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/1005 — основное усовершенствование и одна из лучших вещей, которые я сделал в жизни :D, это добавляет красно-чёрное дерево фрагментов свободного пространства (rbtree_best_fit из https://www.boost.org/doc/libs/latest/doc/html/interprocess/memory_algorithms.html), без этого фрагментированные случаи рисковали напороться на аналог того, на что жёлтый человек напоролся в самом FPC в https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/994#note_2476334544, хотя у переписывания из !694 был малюсенький побочный эффект, компенсирующий часть таких случаев — я даже сначала наивно думал, что все. Промышленные менеджеры памяти «обычно» вроде как не используют деревья, и я даже до сих пор не разобрался, как они вообще работают (битовые поля там какие-то, хз...), но по виду они сосут у моего (либо это неправда, либо они зато, возможно, дают меньшую фрагментацию: такую «очевидную» последовательность из занятых и свободных блоков, что в Boost.Interprocess / FPC, по самой её природе при желании можно фрагментировать в хлам, просто с красно-чёрным деревом это перестаёт быть большой проблемой), поэтому и не так интересно разбираться, как конкретно с руками, без... они это делают.
|