LINUX.ORG.RU

mmap,brk,sbrk и стек


0

0

кто нить знает как раруливается выделение памяти (адресного пространства) mmap чтобы не мешать росту сегмента данных и росту стека?

★★★★★

AFAIK модерн glibc использует анонимный mmap вместо brk/sbrk для того, что-бы выделять память, которая отдается malloc-ом.

В любом случае ответ просто -- "кладет где-нить посредине" ;)

fmj
()
Ответ на: комментарий от cvv

> могласно инфо по сей день пользуется винигрет системных вызовов

afaik, в линуксе один сисколл (do_mmap). Ну ещё на ia64/ppc64 делегироваться может в отдельный mmap для hugepages. Ммапиться сегменты предпочитают в противоположную сторону роста стека.

mv ★★★★★
()

ну стеку оно точно не должно мешать, т.к стек ростет в другую сторону, ядро должно mmap'ить так чтобы это не мешало хипу и на это никак нельзя повлеять из user-space.

UrbanSerj
()
Ответ на: комментарий от fmj

> FAIK модерн glibc использует анонимный mmap вместо brk/sbrk для того, что-бы выделять память, которая отдается malloc-ом.

Нет, там есть определенный порог (вкомпилированный), и malloc позовет анонимный mmap лишь в случае, если ты попросишь кусок, который этот порог превышает. Если нет, то malloc сначала в свободном пуле поищет, а если не найдет, то позовет brk.

Но ядро, как тут уже замечали, все равно do_mmap будет делать.

Die-Hard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.