Linux 上的 Restartable Sequences

看到「Restartable Sequences (via)」這個介紹 Linux 上的 Restartable Sequences (rseq),試著讓 user-space application 避開 heavy lock 的機制,讓演算法有不同的工具可以增加效能。 原作者網站好像沒設定好 Let's Encrypt 的 renew,所以開不起來,不過照慣例這種有上 Hacker News 的文章都可以在 Internet Archive 上看到備份的原文:「Restartable Sequences」。 rseq 的想法在「R...

Gea-Suan Lin's BLOG

OSDEV: Разработка аллокатора на С++ часть 4. mem_malloc_aligned

Приветствую читатель! Для тех кто со мной впервые вот оглавление: Часть 1 Часть 2 Часть 3 Код лежит тут Подразумевается что читатель знаком с архитектурой аллокатора из части 3 и понимает алгоритм неявного списка свободных блоков который был освещен в части 1 Аллокатор работает стабильно, все тесты зеленые, включая тесты на стабильность. И следующим шагом логично бы реализовать перегрузки new и delete для abi, но вот незадача: там есть версии принимающие дополнительный аргумент, а именно выравнивание. Эту фичу я реализовать как раз забыл. В архитектуре которая рассматривается в предыдущей статье это оказалось простой, но интересной задачей. Ее мы и обсудим ниже. Решение потребовало реализации функции mem_malloc_aligned которая выделит бОльший кусок памяти с учетом запрошенного выравнивания что бы мы там точно нашли правильно выровненный адрес. Но что если адрес указателя из mem_malloc_aligned не совпадает с адресом указателя который вернул mem_malloc? Что делать в mem_free? Что делать в mem_realloc? Как мне работать с указателем перед которым не хедера? Для начала я решил применить технику добавления смещения перед payload выровненного блока вместо хедера, смещения до payload изначального блока у которого есть хедер и футер. Но как мне отличить offset от header? Я решил добавить magic number в хедер и футер увеличив тем самым размер оверхеда в 2 раза и раз уж от него считалось внутреннее выравнивание блоков памяти в аллокаторе и минимальный размер блока, то теперь минимальный размер блока стал 32 байта, а с оверхедом все 64. Теперь можно просто проверять magic number и если он не совпадает, то интерпретировать число на месте хедера как смещение до payload блока который вернул mem_malloc и далее получив на него указатель работать с блоком стандартным образом.

https://habr.com/ru/articles/1047178/

#аллокатор #распределение_памяти #malloc #free #realloc

OSDEV: Разработка аллокатора на С++ часть 4. mem_malloc_aligned

Приветствую читатель! Для тех кто со мной впервые вот оглавление: Часть 1 Часть 2 Часть 3 Код лежит тут Подразумевается что читатель знаком с архитектурой аллокатора из части 3 и понимает алгоритм...

Хабр

OSDEV: Разработка аллокатора на С++ часть 3. Финальный аллокатор со списками свободных блоков

В третьей статье пойдет речь уже о готовом аллокаторе который вполне пригоден для распределения памяти

https://habr.com/ru/articles/1045692/

#аллокатор #allocator #malloc #free #распределение_памяти #osdev #менеджмент_памяти #memory_management

OSDEV: Разработка аллокатора на С++ часть 3. Финальный аллокатор со списками свободных блоков

Оглавление Часть 1 Часть 2 Весь код можно найти в этом репозитории В третьей статье пойдет речь уже о готовом аллокаторе который вполне пригоден для распределения памяти. Он полностью переписан, но...

Хабр

Episode 33 ist raus!

Kind: 2, Smart Home: 0

https://share.transistor.fm/s/7a35c088

#homeassistant #linux #kde #childproofing #memorymanagement #malloc #matter #ikea

Viel Spaß beim Hören wünschen euch:
@ajfriesen und @behweh

SmartHütte | Kind: 2, Smart Home: 0

Diese Woche im Fokus:Andrejs Tochter eröffnet bei uns das neue Format "Kind vs Smart Home", und es hat den Anschein, als könnte sich das zu einem regelmäßigen Format entwickeln. ;-) Ausserdem berichtet Andrej darüber, was sich auf seinem Desktop Linux so getan hat und weist schon mal darauf hin,...

In the past weeks, the pwn.college Dynamic Allocator Misuse module taught me many practical concepts I have long known from theory:

Use-after-free, double-free, tcache internals, LIFO reuse, tcache poisoning, arbitrary read, fake chunks, safe-linking, whitespace-armored addresses, and partial secret corruption.

Knowing theory is good, but experiencing those concepts in practice is priceless.
Thank you, @pwn.college!

#ctf #cybersecurity #pwncollege #malloc #heap #tcache #safelinking

Finished the pwn.college Yellow belt Dynamic Allocator Misuse - 4 weeks of type-2 fun.

Onward to greatness and my Yellow belt in pwn.college!

#ctf #cybersecurity #pwncollege #malloc #heap #tcache #safelinking

#malloc and #realloc being able to return NULL when given a size of 0 is a discontinuity in design, and a mistake, IMO.

#programming #C #libc

Meta 的 jemalloc 宣言

在 Lobsters 上看到「Investing in Infrastructure: Meta’s Renewed Commitment to jemalloc」這篇,這讓我馬上想到 Jason Evans (就是發明 jemalloc 的人,je 取自他的名字縮寫) 在去年寫的「jemalloc Postmortem」這篇,文章最後提到 Meta 的制度設計使得不會...

Gea-Suan Lin's BLOG

[Перевод] Почему первый вызов моей malloc всегда аллоцирует 72 КБ?

Мне нравится экспериментировать с кастомными аллокаторами памяти, используя собственные реализации. И хотя модульные тесты помогают убедиться в их корректности, настоящей проверкой становится работа аллокатора в реальных программах. Коротко о теме статьи. Стандартная библиотека C++ инициализирует механизм обработки исключений на раннем этапе, выделяя память для «резервного пула», чтобы можно было использовать её под выброс исключений, если malloc вдруг провалится.

https://habr.com/ru/companies/ruvds/articles/1006290/

#ruvds_перевод #программирование #c++ #linux #malloc #аллокация_памяти

Почему первый вызов моей malloc всегда аллоцирует 72 КБ?

Мне нравится экспериментировать с кастомными аллокаторами памяти, используя собственные реализации. И хотя модульные тесты помогают убедиться в их корректности, настоящей проверкой становится работа...

Хабр