Re: а есть ли смысл юзания malloc вместо mmap(MAP_ANONYMOUSLY)???
определенно есть, для "маленьких" блоков, это будет
зачастую вообще без входа в ядро.
начиная с некоторого размера лучше mmap напрямую,
но malloc() так и делает: MALLOC_MMAP_THRESHOLD_.
Re: а есть ли смысл юзания malloc вместо mmap(MAP_ANONYMOUSLY)???
Я в этих делах не силен, но рискну предположить что malloc запрашивает у системы сразу объем памяти кратный размеру страницы (4096 б), а затем ее "раздает" по мере надобности.
Re: а есть ли смысл юзания malloc вместо mmap(MAP_ANONYMOUSLY)???
Чтобы увидеть логику, достаточно почитать исходники? Что тут такого непонятного? Сначала mmap-ом выделяем большой кусок, потом раздираем его по мелочам, когда кончается - выделяем ещё.
Re: а есть ли смысл юзания malloc вместо mmap(MAP_ANONYMOUSLY)???
Дахз. у меня сорцов libc под рукой нету, а искать впадлу.
А "больше" это как ? Т.е. размер выделяемой памяти не кратен размеру страницы ? Если так, ты считайте что вы меня заинтересовали =), посмотрю на досуге
Re: а есть ли смысл юзания malloc вместо mmap(MAP_ANONYMOUSLY)???
>но рискну предположить что malloc запрашивает у системы сразу объем памяти кратный размеру страницы (4096 б), а затем ее "раздает" по мере надобности.
я тоже так думал но глубоко ошибся.
на 1000 malloc(1);
приходится 5 выделений из ядра.
тоесть память у ядра запрашивается блоками гдето по 200(256??) байт.
Re: а есть ли смысл юзания malloc вместо mmap(MAP_ANONYMOUSLY)???
блин пионэры..МАТ.ЧАСТЬ - УЧИТЬ !!
malloc - библиотечный вызов для динамического выделения памяти из hip`а
hip - это фрагмент памяти до конца сегмента данных.
если malloc не находит требуемого кусочка в hip`е то делает системный вызов brk() для увеличения сегмента данных.
man malloc
man brk
man syscall
читать книжки